установите Combobox ItemsSource BindingContext в ViewModel - PullRequest
0 голосов
/ 18 марта 2020

У меня есть 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.

Как я могу связать все свои Comboboxes ItemsSource не из Items, а из моей ViewModel? (Я читал о "BindingContext" , но не могу найти, как это сделать на ComboBox ItemsSource)

1 Ответ

1 голос
/ 18 марта 2020

По сути, вы хотите создать привязку, которая имеет RelativeSource с соответствующими DataContext вашей ViewModel.

Вот пример:

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

Я надеюсь, что это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...