.net 在WPF组合框中查找项
我知道在ASP.NET中,我可以使用.net 在WPF组合框中查找项,.net,wpf,search,user-controls,.net,Wpf,Search,User Controls,我知道在ASP.NET中,我可以使用 DropDownList1.Items.FindByText 在WPF中有没有类似的方法可以用于组合框 下面是一个场景 我有一个名为RestrictionFormat的表,其中包含一个名为RestrictionType的列,该类型是存储这些值的表的外键 在我正在编写的编辑器应用程序中,当用户从组合框中选择RestrictionFormat时(这很好),我将调出细节进行编辑。我使用第二个组合框来确保用户在编辑时只选择一个RestrictionType。我已经
DropDownList1.Items.FindByText
在WPF中有没有类似的方法可以用于组合框
下面是一个场景
我有一个名为RestrictionFormat的表,其中包含一个名为RestrictionType的列,该类型是存储这些值的表的外键
在我正在编写的编辑器应用程序中,当用户从组合框中选择RestrictionFormat时(这很好),我将调出细节进行编辑。我使用第二个组合框来确保用户在编辑时只选择一个RestrictionType。我已经有了RestrictionType表中的第二个combobox绑定属性,但是我需要更改它上所选的索引以匹配记录中指定的值
下面是一个场景 我有一个名为RestrictionFormat的表,其中包含一个名为RestrictionType的列,该类型是存储这些值的表的外键 在我正在编写的编辑器应用程序中,当用户从组合框中选择RestrictionFormat时(这很好),我将调出细节进行编辑。我使用第二个组合框来确保用户在编辑时只选择一个RestrictionType。我已经有了RestrictionType表中的第二个combobox绑定属性,但是我需要更改它上所选的索引以匹配记录中指定的值
这有意义吗?在WPF中,可以使用FindName方法 XAML:
要按内容查找项目,您可以使用。而不是尝试绑定SelectedIndex,为什么不将组合框中的SelectedItem绑定到记录中的值 换句话说,将组合框(或其父对象)的DataContext设置为选定的“记录”,并将组合框上的SelectedItem绑定到“记录”上的公开属性
如果您可以提供一些代码片段或额外的详细信息,以便响应更具体,并引用您在源记录和已填充的组合框中使用的变量和类型,则可能会有所帮助。您可以使用ItemContainerGenerator吗 ItemContainerGenerator包含接受对象参数的ContainerFromItem方法。如果有对组合框包含的完整对象的引用(或重构该对象的方法),则可以使用以下方法:
ComboBoxItem item =
(ComboBoxItem)myComboBox.ItemContainerGenerator.ContainerFromItem(myObject);
您可以通过两种方式检索组合框项: 按项目分列:
ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromItem(control.SelectedItem);
按索引:
ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromIndex(1);
你能给出一些你到底想做什么的背景吗 您在组合框中放置了哪些对象,使用哪种方法?(是否正在设置或绑定ItemsSource属性?) 为什么需要按项目的“文本”查找项目?WPF中最常用的用法是将SelectedItem属性绑定到其他对象,以便可以使用表示检索/设置所选条目。您是否需要在列表中找到特定项目的特定要求 最糟糕的情况是,您可以使用Linq to对象对组合框绑定到的集合执行搜索
请不要将ComboBoxItem(即绑定ItemsSource时WPF在幕后为您生成的元素)与SelectedItem弄错,SelectedItem是您绑定到的集合中的实际对象。当您不习惯WPF时,这通常是WPF的大多数问题的根源。当您需要查找实际的ComboBoxItem时,很少会出现这种情况。ComboBoxItem只是数据的一个视图。。。我认为在这种情况下进行UI驱动的开发不是一个好主意。您应该对数据源或项集合而不是UI控件本身执行搜索。否则,您可能会被绑定到将来很难维护和支持的UI部件的特定实现。
ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromItem(control.SelectedItem);
ComboBoxItem item = (ComboBoxItem) control.ItemContainerGenerator.ContainerFromIndex(1);