好的,我看了其他问题,但似乎没有得到我的答案,因此希望这里的人可以。

很简单的问题,为什么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/

10-12 15:26