我有一个ListView
显示实体集合的地方。
其中一列包含缩写,我想显示另一个文本。我在字典中有缩写和“显示”字符串。
有什么方法可以在不更改实体的情况下显示字典中的“显示”字符串而不是缩写?
您可以使用 value 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)
{
...
}
}
如果您在视图模型私有 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>