首页 > 解决方案 > 将 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 上执行此操作)

标签: wpfcomboboxbinding

解决方案


本质上,您希望创建一个与您的 ViewModelRelativeSource具有正确性的绑定。DataContext

这是一个例子:

ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListCutMachines}"

我希望这有帮助。


推荐阅读