Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子字符串绑定字符串_C#_Wpf_String_Binding_String Formatting - Fatal编程技术网

C# 子字符串绑定字符串

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} 显然,这将显示相同的字符串,因此我

我想要的是将字符串绑定到textblock或datatrigger(基本上是一些WPF对象)并获取字符串的一部分。此字符串将被分隔。例如,我有一个字符串:

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 ...