从listview中的字典显示值而不是缩写

时间:2013-06-08 22:37:49

标签: c# wpf listview

我有ListView,其中显示了一系列实体。

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

有没有什么方法可以在不改变实体的情况下从字典而不是缩写中显示'display'字符串?

2 个答案:

答案 0 :(得分:1)

您可以使用值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)  
    {  
        ...  
    }  
}  

答案 1 :(得分:0)

如果您在视图模型中声明了这样的字典 私人词典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>