C# 子字符串绑定字符串
我想要的是将字符串绑定到textblock或datatrigger(基本上是一些WPF对象)并获取字符串的一部分。此字符串将被分隔。例如,我有一个字符串:C# 子字符串绑定字符串,c#,wpf,string,binding,string-formatting,C#,Wpf,String,Binding,String Formatting,我想要的是将字符串绑定到textblock或datatrigger(基本上是一些WPF对象)并获取字符串的一部分。此字符串将被分隔。例如,我有一个字符串: String values = "value1|value2"; 我有两个控件-txtBlock1和txtBlock2 在txtBlock1中,我想设置Text属性,如Text={Binding values}。 在txtBlock2中,我想设置Text属性,比如Text={Binding values} 显然,这将显示相同的字符串,因此我
String values = "value1|value2";
我有两个控件-txtBlock1
和txtBlock2
在txtBlock1中,我想设置Text属性,如Text={Binding values}
。
在txtBlock2中,我想设置Text属性,比如Text={Binding values}
显然,这将显示相同的字符串,因此我需要某种StringFormat表达式来添加到子字符串值的绑定中,以便txtBlock1
读取值1和txtBlock2
读取值2
我读了很多书,似乎是这样的:这是典型的建议解决方案。但对于我在这里想要实现的目标来说,这似乎太冗长了
非常感谢您事先提供的帮助。您需要的是一个转换器。 添加转换器参数以指示索引
public class DelimiterConverter : IValueConverter
{
public object Convert(Object value, Type targetType, object parameter, CultureInfo culture)
{
string[] values = ((string)value).Split("|");
int index = int.Parse((string)parameter);
return values[index];
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return "";
}
然后,您只需使用ConverterParameter属性在XAML中指定值的索引。我将使用值转换器,如您链接的示例中所述 但如果您想要更直接的内容,可以使用以下属性和绑定:
public string[] ValueArray
{
get
{
return values.Split('|');
}
}
<TextBlock Text="{Binding ValueArray[0]}" />
<TextBlock Text="{Binding ValueArray[1]}" />
公共字符串[]值数组
{
得到
{
返回值。拆分(“|”);
}
}
但是要注意如果
值
为空或不包含
时可能发生的情况,如果您只有两个字符串,您可以简单地执行以下操作:
<TextBlock Text=Text={Binding value1}/>
<TextBlock Text=Text={Binding value2}/>
事实上,您可以为相关索引编写
设置值
和获取值
函数(扩展上述方法),但如果您不喜欢这种语法,我认为您所提到的是最好的选择 我将字符串绑定到的文本块将作为listbox项的datatemplate的一部分。因此,每个项目的字符串都会不同。非常感谢您的回复,我相信我可以在这里使用您的解决方案。
public string value1
{
get{return values.Split('|')[0]}
set{values = value + values.Remove(0, values.IndexOf('|')+1)}
}
public string value2 ....
public string values ...