Übergeben von Werten an IValueConverter
Ich habe eine ListView
hat eine Grid
mit zwei Spalten und vielen Zeilen. Jede Zeile hat eine TextBlock
in jede Spalte mit jeder Text
Eigenschaft gebunden auf einen Wert in der ListView ItemSource
. Ich brauche, um einige der Umwandlung des Textes in der zweiten TextBlock
je nach Wert in der ersten TextBlock
. Wie bekomme ich den Wert des ersten Textfelds, um den Konverter?
Hier ist was ich habe, so weit:
XAML:
<UserControl.Resources>
<local:ValueStringConverter x:Key="valueStringConverter" />
</UserControl.Resources>
<ListView Name="theListView" ItemsSource="{Binding ItemCollection}" SelectedItem="{Binding SelectedItem}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Grid.Row="1" >
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Key}" Grid.Column="0" Margin="0,0,10,0" />
<TextBlock Text="{Binding Path=Value, Converter={StaticResource valueStringConverter}}" TextWrapping="Wrap" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Code von ValueStringConverter
:
public class ValueStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string name = (string)value;
name = name.Replace("$$", " ");
name = name.Replace("*", ", ");
name = name.Replace("##", ", ");
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
InformationsquelleAutor Chris | 2013-06-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie T-pass-mehr als ein Wert zu den "normalen" Wert-Konverter. Könnten Sie gehen mit IMultiValueConverter und definieren die Bindung als MultiBinding.
Oder Sie erstellen ein IValueConverter, nimmt das gesamte Objekt in der DataContext, CASTET das Objekt zum Typ, den Wert und den Schlüssel und die Rückgabe der Zeichenfolge, die Sie brauchen.
Auf Ihre zweite textblock definieren Bindung als
Und Ihre Konverter:
InformationsquelleAutor jure
Versuchen, multi-Bindung. Sie benötigen eine
IMultiValueConverter
:und leicht modifiziert XAML:
InformationsquelleAutor max
Bindung an die Instanz, nicht die Eigenschaft (
value
in diesem Fall). Dann haben Sie Zugang zu beidenKey
undValue
im Konverter.InformationsquelleAutor trydis