【发布时间】:2011-07-25 21:30:57
【问题描述】:
有人可以帮我解决组合框行为的问题吗?这是我的组合框控件 (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 对象的 ToString() 方法并在那里设置它的公共属性 Name,这个解决方案工作正常,但我认为最好的方法是找到如何将所选项目绑定到我的组合框的 Text 属性中。有没有办法做到这一点?
我已经尝试过 ind Text="{Binding Path=Name}" 和/或 SelectedItem="{Binding Path=Name}" 但在这些情况下总是得到空文本。请帮忙。
【问题讨论】:
标签: c# wpf c#-4.0 wpf-controls binding