Wpf 项目之间的模板

Wpf 项目之间的模板,wpf,xaml,Wpf,Xaml,我有一个项目集合,希望在列表视图中以逗号分隔的值列表的形式显示它。如何在值之间显示逗号 到目前为止,我已经创建了一个ItemsPanelTemplate,其中是我的独生子 显然,创建包含逗号的DataTemplate会产生一个尾随逗号,我不需要它。使用此转换器 公共类StringListConverter:IValueConverter { 公共StringListConverter() { Separator=CultureInfo.CurrentCulture.TextInfo.ListSe

我有一个项目集合,希望在
列表视图中以逗号分隔的值列表的形式显示它。如何在值之间显示逗号

到目前为止,我已经创建了一个
ItemsPanelTemplate
,其中
是我的独生子

显然,创建包含逗号的
DataTemplate
会产生一个尾随逗号,我不需要它。

使用此转换器

公共类StringListConverter:IValueConverter { 公共StringListConverter() { Separator=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();
    }
}
公共字符串分隔符{get;set;}
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
字符串结果=”;
if(值为IList&&targetType.IsAssignableFrom(类型(字符串)))
{
结果=string.Join(分隔符,(值为IList.ToArray());
}
返回结果;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
在参考资料中的XAML中:

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

然后


使用此转换器

公共类StringListConverter:IValueConverter { 公共StringListConverter() { Separator=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();
    }
}
公共字符串分隔符{get;set;}
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
字符串结果=”;
if(值为IList&&targetType.IsAssignableFrom(类型(字符串)))
{
结果=string.Join(分隔符,(值为IList.ToArray());
}
返回结果;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
在参考资料中的XAML中:

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

然后



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