Как привязать свойство к элементу, который находится ниже в визуальном дереве? - PullRequest
0 голосов
/ 06 января 2009

Я не знаю, правильно ли это формулировать вопрос или нет. Вот типичный пример привязки данных:

<UserControl x:Name="root">
   <ListView ItemsSource="{Binding MyItemsSource, ElementName=root}" />
</UserControl>

Но вот что я хочу сделать:

<UserControl DataContext="{Binding SelectedItem, ElementName=lstMyItems}">
   <ListView ItemsSource="{Binding MyItemsSource, ElementName=root}">
</UserControl>

(обратите внимание, что здесь я настраиваю DataContext из UserControl на текущий SelectedItem в ListView).

Есть ли какой-нибудь чистый способ сделать это без событий или без использования кода?

Ответы [ 2 ]

1 голос
/ 08 января 2009

Я решил свою проблему следующим образом:

<UserControl x:Name="root">   
    <ListView ItemsSource="{Binding MyItemsSource}" 
        SelectedItem="{Binding DataContext, ElementName=root, Mode=OneWayToSource}">
</UserControl>

Хитрость в настройке Mode = OneWayToSource.

0 голосов
/ 06 января 2009

Пока вы не делаете этого на уровне UserControl, вы почти ответили на свой вопрос. Например:

<UserControl DataContext="{Binding SelectedItem, ElementName=lstMyItems}">
   <Grid x:Name="_grid">
       <ListView ItemsSource="{Binding MyItemsSource, ElementName=_grid}">
   </Grid>
</UserControl>

Причина, по которой он не работает на корневом уровне, мне не совсем понятна, но я думаю, что это как-то связано с определением имен.

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