0

我有一个ListView显示实体集合的地方。

其中一列包含缩写,我想显示另一个文本。我在字典中有缩写和“显示”字符串。

有什么方法可以在不更改实体的情况下显示字典中的“显示”字符串而不是缩写?

4

2 回答 2

1

您可以使用 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)  
    {  
        ...  
    }  
}  
于 2013-06-09T00:06:46.710 回答
0

如果您在视图模型私有 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>
于 2013-06-09T06:20:47.100 回答