在自动完成组合框中绑定文本属性

有人可以帮助我解决组合框行为的问题。 这是我的组合框控件(WPF):

<ComboBox Grid.Row="1" Grid.Column="1" Margin="6,0,6,6" Name="comboBoxRegionTown" IsEditable="True" IsTextSearchEnabled="True"  PreviewKeyUp="comboBoxRegionTown_PreviewKeyUp" IsTextSearchCaseSensitive="False" />

这个想法是让它自动完成(IsEditable =“True”IsTextSearchEnabled =“True”)。 所以然后我将任何文本输入到组合框中,它显示了数据库的一些结果。

这是comboBoxRegionTown_PreviewKeyUp事件(C#)的代码:

  private void comboBoxRegionTown_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (!string.IsNullOrEmpty(comboBoxRegionTown.Text))
        {
            comboBoxRegionTown.ItemsSource = _br.GetQuery(x => x.Name.Contains(comboBoxRegionTown.Text) && x.RegionTypeId == (int)RegionType.Town).ToList();
            comboBoxRegionTown.IsDropDownOpen = true;
        }
        else
        {
            comboBoxRegionTown.ItemsSource = null;
        }
    }

因此,对我来说工作正常,但是然后我单击它在ComboBox.Text属性中选择的组合框中找到的任何项目(在本例中为 - Region)。 当然,我可以为我的Region对象重写ToString()方法,并在其中设置其公共属性Name,并且此解决方案工作正常,但我认为最好的方法是找到如何将选定项绑定到我的组合框的Text属性。 有没有办法做到这一点?

我已经尝试过编辑Text =“{Binding Path = Name}”和/或SelectedItem =“{Binding Path = Name}”,但在这些情况下,总是得到空的Text。 请帮忙。


你需要做的是为你的ComboBox设置ItemTemplate ,但是如果你只想显示一个属性,有一个更简单的方法:在ComboBox中设置DisplayMemberPath="Name" ,它会为你生成正确的模板。

链接地址: http://www.djcxy.com/p/44619.html

上一篇: Binding Text Property in Autocomplete Combobox

下一篇: WPF DataTemplate ComboBox binding issue