【发布时间】:2013-04-13 16:58:48
【问题描述】:
我无法制定 XAML 字符串以链接到多维数组中的特定元素。
DataContext 包含以下几行:
private String[] _OneDimension = { "[0]", "[1]" };
private String[][] _Jagged = { new String[] { "[0,0]", "[0,1]" }, new String[] { "[1,0]", "[1,1]" } };
private String[,] _TwoDimension = { { "[0,0]", "[0,1]" }, { "[1,0]", "[1,1]" } };
public String[] OneDimension { get { return _OneDimension; } }
public String[][] Jagged { get { return _Jagged; } }
public String[,] TwoDimension { get { return _TwoDimension; } }
XAML 包含以下几行:
<StackPanel>
<Button Content="{Binding OneDimension[1]}" Width="100" Height="50" />
<Button Content="{Binding Jagged[1][1]}" Width="100" Height="50" />
<Button Content="{Binding TwoDimension[1][1]}" Width="100" Height="50" />
</StackPanel>
与OneDimension 和Jagged 的绑定按预期工作。绑定到TwoDimension 不起作用并且似乎是错误的,但是 XAML 不允许我使用分隔符 , 所以我不知道如何绑定到二维数组。
这个:
<Button Content="{Binding TwoDimension[1,1]}" Width="100" Height="50" />
无法编译,因为 XAML 被解释为具有两个用于绑定构造函数的参数。有什么方法可以逃避解析器,还是有另一种我不知道的写法?
编辑:
我刚刚发现可以像这样转义分隔符
<Button Content="{Binding TwoDimension[1\,1]}" Width="100" Height="50" />
或者只是用这样的标记围绕参数
<Button Content="{Binding 'TwoDimension[1,1]'}" Width="100" Height="50" />
然而,这行代码现在导致了一个异常:System.ArgumentException {"Das Array war kein eindimensionales Array."} 不幸的是,C# 以我的母语安装了自己 - 令人讨厌...所以这大致翻译为 {"The Array不是一维数组。"}
真的不能绑定多维数组吗?
【问题讨论】:
-
据我所知,在纯
Xaml中绑定多维数组是不可能的,您必须创建一个IValueConverter才能完成这项工作。 -
嗯,要做到这一点,我必须知道类型......那将是数组......但数组有一个 ValueConverter - 我很确定。我可以注射我的 onw 吗?
-
试试这个链接。希望对你有帮助nicoschertler.wordpress.com/2014/05/22/…
标签: wpf data-binding binding