La transmission de valeurs à IValueConverter
J'ai un ListView
qui a un Grid
avec deux colonnes et nombre de lignes. Chaque ligne a un TextBlock
dans chaque colonne de chaque Text
de propriété lié à une valeur de ListView ItemSource
. J'ai besoin de faire un peu de la conversion du texte dans la deuxième TextBlock
en fonction de la valeur du premier TextBlock
. Comment puis-je obtenir la valeur de la première zone de texte pour le convertisseur?
Voici ce que j'ai à ce jour:
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 de 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();
}
}
OriginalL'auteur Chris | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas passer plus d'une valeur à la "régulière" de la valeur du convertisseur. Vous pourriez aller avec IMultiValueConverter et de définir la liaison comme MultiBinding.
Ou vous pouvez créer un IValueConverter qui prend la totalité de l'objet dans le DataContext, la fonte de l'objet de son type, de prendre de la Valeur et de la Clé et le retour de la chaîne que vous avez besoin.
Sur votre deuxième textblock définir la liaison comme
Et votre converter:
OriginalL'auteur jure
Essayez multi-liaison. Vous aurez besoin d'un
IMultiValueConverter
:et légèrement modifié le code XAML:
OriginalL'auteur max
Se lier à l'instance, et non pas la propriété (
value
dans ce cas). Ensuite, vous aurez accès à la foisKey
etValue
dans le convertisseur.OriginalL'auteur trydis