【问题标题】:Template in between items [duplicate]项目之间的模板[重复]
【发布时间】:2012-08-13 13:47:07
【问题描述】:

我有一个项目集合,并希望在 ListView 中将其显示为逗号分隔值的列表。如何在值之间显示逗号?

到目前为止,我已经创建了一个 ItemsPanelTemplate 和一个 <VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/> 作为唯一的孩子。

显然,创建一个包含逗号的DataTemplate 会导致一个拖尾的逗号,我不想要一个。

【问题讨论】:

  • 您的 ViewModel 中的 string.Join() 怎么样?
  • 是的,如果列表中的项目是字符串,这将是一个简单的解决方案,但是我想要一个更通用的解决方案。逗号分隔只是问题的一个说明。虽然我实际上想要一个空格分隔并且元素本身是字符串,但我仍然不想加入它们,因为它们应该有不同的颜色和不同的悬停效果等。
  • 请看我的回答here

标签: wpf xaml


【解决方案1】:

使用这个转换器...

公共类 StringListConverter : IValueConverter { 公共 StringListConverter() { 分隔符 = CultureInfo.CurrentCulture.TextInfo.ListSeparator + " "; }

    public string Separator { get; set; }



    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string result = "";
        if (value is IList<string> && targetType.IsAssignableFrom(typeof(string)))
        {
            result = string.Join(Separator, (value as IList<string>).ToArray());
        }
        return result;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

在 XAML 中的资源中:

<rw:StringListConverter x:Key="StringListConverter"/>

然后

<TextBlock Text="{Binding ItemList, Converter={StaticResource StringListConverter}}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 2020-12-12
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2013-01-06
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多