WPF, Caliburn.micro: как привязать свойство вне текущего контекста привязки? - PullRequest
0 голосов
/ 20 июня 2020
<DataTemplate>
<StackPanel Orientation="Vertical">
    <TextBlock Text="{Binding Key}"></TextBlock>
    <ComboBox ItemsSource="{Binding Value}" SelectedItem="{Binging SomeProperty}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"></TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</StackPanel>

Я внутри словаря, я хочу привязать SelectedItem="{Binging SomeProperty}" SomeProperty - это свойство ViweModel, а не внутри словаря. Как это сделать? Как я могу привязаться к свойствам вне текущего контекста привязки.

1 Ответ

1 голос
/ 20 июня 2020

В случае Binding для свойства Window.DataContext, вы можете сделать это следующим образом с RelativeSource:

<ComboBox ItemsSource="{Binding Value}" SelectedItem="{Binding DataContext.SomeProperty, RelativeSource={RelativeSource AncestorType=Window}}">

Или, если вы хотите отобразить SelectedItem для например, в некоторых TextBox (например, коллекция string):

<TextBox Text="{Binding MyCollection/}"/>
<ComboBox ItemsSource="{Binding MyCollection}" IsSynchronizedWithCurrentItem="True">

MyCollection с «/» получает текущий элемент ICollectionView, используемый как DefaultView для MyCollection . Подробнее >>>

...