【发布时间】:2009-11-05 12:22:06
【问题描述】:
我注意到,如果您有任何从 UIElement 派生的项目作为 Silverlight 中的 ListBox 中的项目,它会按原样呈现对象并且不注意 DisplayMemberPath 和/或 @987654324 的设置@。
例如,如果您有这样的 XAML:
<ListBox Width="200" Height="300" DisplayMemberPath="Tag">
<TextBlock Tag="tag1">text1</TextBlock>
<TextBlock Tag="tag2">text2</TextBlock>
<TextBlock Tag="tag3">text3</TextBlock>
</ListBox>
在 Siverlight 中,这会生成一个 ListBox,其中包含以下项目:
text1
text2
text3
但是在 WPF 中(我认为这是正确的行为)它会按预期列出标签:
tag1
tag2
tag3
如果我使用不是从 UIElement 继承的对象,一切都会按预期工作:
<ListBox Width="200" Height="300" DisplayMemberPath="[0]">
<sys:String>abcde</sys:String>
<sys:String>fgh</sys:String>
</ListBox>
生产:
a
f
有什么方法可以像使用其他对象一样在 Silverlight 中使用 UIElements 作为 ItemsSource?还是我错过了什么?
【问题讨论】:
-
我没有答案,有点像 Silverlight 中的错误。不过老实说,我的问题应该是:为什么首先要使用框架元素作为数据源?
-
好吧,我相信你可以想出很多方案。我真正的评论有点太长了。但是,例如,您可能在其他一些容器中有一个控件列表。假设您的列表框中显示了某个 StackPanel 中的控件列表,并且您希望显示这些控件的 Name 属性。
标签: wpf silverlight data-binding itemssource uielement