2010-12-02 4 views
21

Ich habe ItemsControl, das an die Auflistung des Typs Student gebunden ist. Innerhalb der ItemTemplate habe ich eine TextBox, die IValueConverter verwendet, um einige benutzerdefinierte Berechnungen und Logik zu tun. Ich möchte das eigentliche Student-Objekt an den Wertkonverter übergeben, stattdessen eine Eigenschaft davon. Wie kann ich das machen? Hier ist ein Beispiel meines Codes.WPF übergeordnetes Bindungsobjekt an den Konverter übergeben

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

Im Code Ich habe diese

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; 
     } 
} 

Antwort

34

Sie können den Pfad einfach wegzulassen. So kommst du an das eigentliche Objekt gebunden.

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

oder wenn man darüber sein persönliches Vertrauen wollen:

<TextBlock Text="{Binding Path=., Converter={StaticResource MyConverter}}"/> 
+3

Danke, ich werde mich jetzt gehen und in Verlegenheit bringen. –

+2

Nun, es ist nicht sofort offensichtlich. Sie können dies als Antwort markieren, wenn es geholfen hat. :) Übrigens, mit {Binding Path =.} Erhalten Sie das gleiche Ergebnis. – Botz3000

+0

Ich musste 9 Minuten warten, bevor ich es akzeptieren konnte :) –