使用Hashtable作为DataContext(用于WPF / XAML绑定)

3

在代码中,我有一个名为MyHashtable的哈希表。这个哈希表包含一个键为"Value",值为3的元素。我目前正在尝试将这个值绑定到一个文本框上。这是我的XAML代码:

<TextBlock Margin="4" Text="{Binding MyHashtable[Value]}" />
<TextBlock Margin="4" DataContext="{Binding MyHashtable}" Text="{Binding [Value]}" />

问:为什么第二个绑定不工作,而第一个绑定却很好用?

对于第二个绑定,我已经尝试了其他文本的绑定方式,例如:Valuethis[Value] 或者 Me[Value],但是它们都不起作用。


使用 Item[Value] 会给我带来一个有趣的异常:Parameter count mismatch. 有人能理解这个吗? 这是由于C#和VB.NET之间存在差异引起的。请参见 这个问题


尝试使用DataContext[Value]进行第二个绑定。 - Florian Gl
我认为DataContext的重点在于您不需要在任何进一步的绑定中引用MyHashtable。无论如何,我尝试了它,但它也没有起作用。 - Rudey
错误提示说在Hashtable类型中没有找到属性“Item”,这是正确的。 - Luis Filipe
@LuisFilipe,请问为什么它找不到Hashtable.Item?相信我,我正在针对硬编码值测试所有可能的情况。另外,通常添加Path=也不会有任何区别。 - Rudey
我已经检查过了,在VS Express 2012中第二个绑定是有效的(应该是这样的)。 如果您在您的版本上遇到问题,请尝试使用字典。 - Maciek Świszczowski
显示剩余5条评论
1个回答

1
第二个选项,您可以直接使用这个:

<TextBlock Margin="4" 
     DataContext="{Binding MyHashtable}" 
     Text="{Binding RelativeSource={x:Static RelativeSource.Self},
            Path=DataContext[Value]}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接