Wpf组合框允许编辑,这是好的如果你所有的组合框项目串,或有一个ToString()定义的方法。

当你选择一个项目,它是作为文本显示,它不使用一个数据模板,它只是呼吁ToString()上的项目被选中。

我得到一个列表中的项目在我的组合下,被格式化使用我的项目的模板,当我选择一个,我得到对象的名称即 MyNamespace.MyObjectName

一些解决方案已经

  • 使用ValuePath结合到一个酒店 的对象,但是如果你需要 你的显示器是一个多的 这些坏运气。
  • 实现ToString()方法 你的对象

是否有另一种方式?

有帮助吗?

解决方案

你可以这样做完全在Xaml

<ComboBox IsTextSearchEnabled="True" IsEditable="True"
        ItemsSource="{Binding MyObjectCollection}"
        TextSearch.TextPath="MyObjectName">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding MyObjectName}" />
        </DataTemplate>
     </ComboBox.ItemTemplate>
</ComboBox>

好处是,可以定义和改变这个但是你想在你的XAML没有任何代码-在后面。你绑定的该视图可以收藏的物体,然后设置的路径,在此基础的搜索TextSearch.TextPath.然后,在你的内在定义ItemTemplate你可以结合对文本块到别的东西之外的目的ToString方法。

其他提示

你可以使用 IValueConverter 转换的"对象"一字符串值和回。见例码在IValueConverter链接的详细信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top