c# - 在 wpf 中绑定 Combobox 的 SelectedItem
问题描述
我浏览了很多关于这个主题的文章,但到目前为止,没有人提出适合我的解决方案。
我正在使用在本网站的另一篇文章中找到的 FilteredComboBox(基于文本输入的 WPF 组合框的动态过滤器, YantingChen 的固定版本)。我正试图让它与我的代码一起工作。
我有一个视图模型,它在打开视图时执行以下代码:
Object = _context.ObjectReader.GetObjectById(i); //returns an object with property Prop, that is of type Item
Items = _context.ItemReader.GetAllItems(); //returns an ObservableCollection<Item>. Item has a property Name
RaisePropertyChanged(nameof(Object));
RaisePropertyChanged(nameof(Items));
我的 xaml 将此用于 FilteredComboBox:
<local:FilteredComboBox ItemsSource="{Binding Items}"
SelectedItem="{Binding Object.Prop}"
DisplayMemberPath="Name"
Width="200">
<local:FilteredComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VirtualizationMode="Recycling"/>
</ItemsPanelTemplate>
</local:FilteredComboBox.ItemsPanel>
</local:FilteredComboBox>
我想要完成的是组合框在打开视图时显示 Object.Prop 的当前值,但在当前设置中不会发生这种情况。根据我通过谷歌搜索这个问题所收集到的信息,绑定到组合框的 SelectedItem 会遇到一些奇怪的困难,但我希望这里的人能够指出我正确的方向。
我尝试了以下方法:
<local:FilteredComboBox ItemsSource="{Binding Items}"
SelectedItem="{Binding Object.Prop}"
SelectedValue="{Binding Object.Prop.Name}"
DisplayMemberPath="Name"
Width="200">
<local:FilteredComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VirtualizationMode="Recycling"/>
</ItemsPanelTemplate>
</local:FilteredComboBox.ItemsPanel>
</local:FilteredComboBox>
这几乎似乎工作,除了它以某种方式将选择设置为项目源中的错误项目。
解决方案
推荐阅读
- android - Volley 无法在某些设备中连接到服务器
- image - 在电子表格单元格中插入图像和文本
- arrays - 用 Camel 拆分 Json 数组
- typescript - Typescript - 在构造函数装饰器中调用类方法
- php - 在 Woocommerce 3 中使用 Product CRUD setter 方法
- maven - 使用命令行更改 maven surefire 报告目录
- python - python turtle 导致错误
- swift - CoreBluetooth XPC 连接无效错误和 Info.plist 添加
- vba - 使用 VBA 对屏蔽 URL 进行 Web 抓取
- encryption - 没有 IV 的 AES CTR - 多条消息的相同密钥 - 安全吗?