将 Combobox ItemsSource BindingContext 设置为 ViewModel
set Combobox ItemsSource BindingContext to ViewModel
我有一个 ListView,我在其中放置了一些组合框,如下所示:
<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 中列出的项目)。
但我想要的不是从我的对象中而是从我的 ViewModel 中获取 Combobox ItemsSource。
我如何才能绑定我的所有 Items Comboboxes ItemsSource,而不是来自 Items,而是来自我的 ViewModel?(我阅读了有关 "BindingContext",但没有找到如何在 ComboBox ItemsSource 上执行此操作)
本质上,您想要创建一个具有 RelativeSource
的绑定以及您的 ViewModel 的正确 DataContext
。
这是一个例子:
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListCutMachines}"
希望对您有所帮助。
我有一个 ListView,我在其中放置了一些组合框,如下所示:
<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 中列出的项目)。
但我想要的不是从我的对象中而是从我的 ViewModel 中获取 Combobox ItemsSource。
我如何才能绑定我的所有 Items Comboboxes ItemsSource,而不是来自 Items,而是来自我的 ViewModel?(我阅读了有关 "BindingContext",但没有找到如何在 ComboBox ItemsSource 上执行此操作)
本质上,您想要创建一个具有 RelativeSource
的绑定以及您的 ViewModel 的正确 DataContext
。
这是一个例子:
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListCutMachines}"
希望对您有所帮助。