在列表视图中显示字典中的值,而不是缩写



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

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

是否有任何方法可以从字典中显示'display'字符串而不是缩写,而不改变实体?

您可以使用值Converter,例如:

<<p> 视图/strong>
<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>

最新更新