好的,我看了其他问题,但似乎没有得到我的答案,因此希望这里的人可以。
很简单的问题,为什么DisplayMemberPath属性不绑定(bind)到项目?
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" DisplayMemberPath="{Binding Name}" SelectedItem="{Binding Prompt}"/>
跟踪输出显示它正在尝试绑定(bind)到包含IEnumerable的类,而不是IEnumerable中的实际项目。我对填充组合框而不在xaml中添加一堆行的简单方法感到困惑。
它只是在itemssource中为对象调用ToString()。我有一个解决方案是这样的:
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" SelectedItem="{Binding Prompt}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
但是在我看来,如此简单的任务实在太多了。我可以使用相对源绑定(bind)吗?
最佳答案
DisplayMemberPath
指定每个项目的显示字符串属性的路径。就您而言,您可以将其设置为"Name"
,而不是"{Binding Name}"
。
关于wpf - WPF组合框DisplayMemberPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1460612/