我有一个显示实体集合的ListView
。
其中一列包含一个缩写,我想显示另一个文本。我在字典中有缩写和'display'字符串。
是否有任何方法可以从字典中显示'display'字符串而不是缩写,而不改变实体?
您可以使用值Converter
,例如:
<ListView.View>
<GridView>
<GridViewColumn Header="Abbreviation">
<GridViewColumn.DisplayMemberBinding>
<Binding Path="Abv" Converter="{StaticResource abvConverter}"/>
</GridViewColumn.DisplayMemberBinding>
</GridViewColumn>
</GridView>
</ListView.View>
值转换器
[ValueConversion(typeof(string), typeof(string))]
public class AbbreviationConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// error checking
return myDictionaryInstance[value.ToString()];
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
...
}
}
如果在视图模型中像这样声明了字典private Dictionary m_DictRows;
public Dictionary<string, string> DictRows
{
get { return m_DictRows; }
set { m_DictRows = value; }
}
那么在xaml中只需要按以下方式绑定:
<ListView ItemsSource="{Binding DictRows, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}" Style="{DynamicResource txtID}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>