Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 循环浏览(和删除)绑定组合框的项_Wpf_Combobox - Fatal编程技术网

Wpf 循环浏览(和删除)绑定组合框的项

Wpf 循环浏览(和删除)绑定组合框的项,wpf,combobox,Wpf,Combobox,我是WPF的新手,并且痛苦地意识到了这一点。我一直在寻找这个问题的答案,但都没有成功,现在我正在向知识更渊博的同龄人寻求建议 场景 我正在使用的应用程序允许用户将新记录输入数据库,或修改现有记录 我有一个包含绑定组合框的表单。它从数据库中填充,该数据库由公开DTO的WPF服务访问 从UI的角度来看,表单有两种模式: 1.输入新记录 2.修改现有记录 在这两种情况下都会出现有问题的组合框,但要求在表单处于“修改”模式时具有较少的可见选项 我试图做的是在表单处于“修改”模式时循环组合框项目,并删除/

我是WPF的新手,并且痛苦地意识到了这一点。我一直在寻找这个问题的答案,但都没有成功,现在我正在向知识更渊博的同龄人寻求建议

场景

我正在使用的应用程序允许用户将新记录输入数据库,或修改现有记录

我有一个包含绑定组合框的表单。它从数据库中填充,该数据库由公开DTO的WPF服务访问

从UI的角度来看,表单有两种模式: 1.输入新记录 2.修改现有记录

在这两种情况下都会出现有问题的组合框,但要求在表单处于“修改”模式时具有较少的可见选项

我试图做的是在表单处于“修改”模式时循环组合框项目,并删除/隐藏不应出现的选项

XAML

<ComboBox x:Name="RecordType"  Grid.Column="1" Grid.Row="1"  Width="150"  HorizontalAlignment="Left" SelectedValue="{Binding Path=RecordTypeID,TargetNullValue=0}"/>
(注意:IsApplicable()是一个简单的方法,它将收到的字符串与表单处于“修改”模式时允许出现的选项列表进行比较。)

问题

我相信你们很多人都已经知道。。。无法将DTO类型的对象强制转换为System.Windows.Controls.ComboBoxItem类型

问题


我可以用这种或类似的方法获取字符串值吗?如果是的话,请怎么做?

正确的方法是在集合视图上应用过滤器 看

ICollectionView视图=CollectionViewSource.GetDefaultView(comboBox.ItemsSource);
view.Filter=不适用

view.Refresh();// 正确的方法是在集合视图上应用过滤器 看

ICollectionView视图=CollectionViewSource.GetDefaultView(comboBox.ItemsSource);
view.Filter=不适用

view.Refresh();// 如果您将combobox绑定到ObservableCollection,然后在需要时从集合中删除这些项,可能会更容易


下面是一个示例:

如果您将组合框绑定到一个ObservableCollection,然后在需要时从集合中删除这些项,可能会更容易


下面是一个示例:

如何填充组合框?如何填充组合框?谢谢Joe。我确实试过了,但没能成功。这可能更多的是因为我的N00B,而不是其他原因。谢谢乔。我确实试过了,但没能成功。这可能更多的是因为我的N00B,而不是别的。谢谢你,哈桑。这对我很管用。(请注意,只要达到15个代表分数,我就会回来投票!)谢谢,哈桑。这对我很管用。(附言,只要获得15个代表分数,我就会回来投票支持!)
foreach (ComboBoxItem item in this.RecordType.Items)
{
    if (IsApplicable(item.Content.ToString()) == false)
    {
        item.Visibility = Visibility.Hidden;
    }
}
ICollectionView view = CollectionViewSource.GetDefaultView(comboBox.ItemsSource);
view.Filter = IsApplicable
view.Refresh(); // <-- call this whenever you change the view model