首先,我想为我的英语道歉,这远非完美(它不是我的母语......)。
我的XAML代码中存在与数据绑定相关的问题。我有一个combox,它应该列出我放在自定义画布上的所有图形节点。我的图形节点在列表graphCanvas.uinodes
中引用,每个节点都有name
。这就是我想在组合框中显示的内容。
所以我尝试过这样的事情:
<ComboBox ItemsSource="{Binding ElementName=graphCanvas, Path=uinodes/name}"
Height="23" HorizontalAlignment="Left" Name="comboBox1"
VerticalAlignment="Top" Width="71" Foreground="Black" />
但即使在我的画布上绘制节点后,我的combox也是空的......
有任何线索吗?
感谢。
答案 0 :(得分:1)
使用ElementName
的绑定查找具有该名称的WPF元素。我怀疑你是否已经为Canvas
创建了子类,并为其添加了uinodes
属性,这是Path
找到某种东西的唯一方法,即使路径语法是正确的,但事实并非如此。
如果在运行程序时查看“输出”窗口,您将看到一条错误消息,告诉您绑定无法正常工作的原因。这是一个开始。
但即使这样,你也不会用这种方法得到你想要的东西。您可能想要的更像是:
<ComboBox ItemsSource="{Binding ElementName=graphCanvas, Path=uinodes}"
DisplayMemberPath="name"/>
甚至
<ComboBox ItemsSource="{Binding ElementName=graphCanvas, Path=uinodes}">
<ComboBox.ItemTemplate>
<TextBlock Text="{Binding name}"/>
</ComboBox.ItemTemplate>
</ComboBox>
答案 1 :(得分:0)
您的绑定(特别是Path
分配)看起来不对。假设uinodes
是某种类型的Enumerable,它看起来好像是在尝试绑定到集合的`name'属性,而该属性不存在。试试这个:
ItemsSource="{Binding ElementName=graphCanvas, Path=uinodes}" DisplayMemberPath="name"
另外,您可以使用输出窗口查看任何绑定错误。