Question

I have ItemsControl that is bound to collection of type Student. Inside the ItemTemplate I have a TextBox that uses IValueConverter to do some custom calculations and logic. I want to pass the actual Student object to the value converter, instead a property of it. How can I do that? Here's a sample of my code.

 <ItemsControl ItemsSource="{Binding StudentList}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Name}" />
                                    <TextBlock Text="{Binding ????, Converter={StaticResource MyConverter}}" />
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
 </ItemsControl>

In the code I have this

public class MyValueConverter : IValueConverter
{
      public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            // I want 'value' to be of type Student.
            return null;
        }
} 
Was it helpful?

Solution

You can just leave out the path. That way you get at the actual object bound to.

<TextBlock Text="{Binding Converter={StaticResource MyConverter}}"/>

or if you want to be explicit about it:

<TextBlock Text="{Binding Path=., Converter={StaticResource MyConverter}}"/>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top