wpf - 将 Combobox ItemsSource BindingContext 设置为 ViewModel
问题描述
我有一个 ListView,我在其中放置了一些 ComboBox,如下所示:
<ListView x:Name="ListViewCategories" SelectedItem="{Binding SelectedCategory}" ItemsSource="{Binding ListCategoryPart}" SelectionChanged="ListViewCategories_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header ="{x:Static p:Resources.Machine}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding ListCutMachines}"
SelectedValuePath="ID"
SelectedValue="{Binding DefaultCutMachine, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Name" Width="100"
/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
DefaultCutMachine 是我的对象的一部分CategoryPart
(ListView 中列出的项目)。
但我想要的不是从我的对象中获取 Combobox ItemsSource,而是从我的 ViewModel 中获取。
如何绑定我的所有项目组合框 ItemsSource 不是来自项目,而是来自我的 ViewModel?(我阅读了“BindingContext”,但没有找到如何在 ComboBox ItemsSource 上执行此操作)
解决方案
本质上,您希望创建一个与您的 ViewModelRelativeSource
具有正确性的绑定。DataContext
这是一个例子:
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListCutMachines}"
我希望这有帮助。
推荐阅读
- react-native - React Native 深度链接 - 损坏?
- javascript - 将 HTML 动态添加到 Pug(Jade)模板的正确方法是什么?
- html - 链接到另一个 html 文件的 HTML href 卡在旋转的圆圈上
- android - 没有收到 ACTION_PACKAGE_REMOVED 广播 - Android 10/设置
- java - (Kotlin) 如何将 hashmap 输出保存到文件
- postgresql - Kubernetes - Postgres - 创建表
- php - 将特定的子数组传递到另一个页面 php
- java - 确保该方法返回一个列表
而不仅仅是一个列表。在java中 - android - 免费 VoIP 服务提供商的名称和 SIP 和应用程序到应用程序的呼叫是否相同?
- data-visualization - 如何将文本标记添加到 Vega Lite 分组条形图