Привязать свойство в контексте данных к другому объекту, содержащемуся в контексте данных - PullRequest
0 голосов
/ 21 октября 2011

Рассмотрим сценарий, показанный ниже

class MyViewModel
{
    public bool IsSelected {get;set;}
}

class SomeClass
{
    public bool IsSelected {get;set;}
    public object Data {get;}
}

<DataTemplate x:Key="ItemTemplate>
    <Image ... />
</DataTemplate>

<SomeControl ItemsSource={Binding MyViewModels}"
             ItemTemplate={StaticResource ItemTemplate}" />

Классы SomeControl и SomeClass являются сторонними классами, которые я не могу изменить.Внутренне SomeControl создает экземпляры SomeClass и назначает мою модель представления его свойству Data.Итак, контекст данных моего ItemTemplate - SomeClass

Я хочу связать свойство IsSelected в SomeClass со свойством IsSelected MyViewModel.Как мне это сделать?

1 Ответ

0 голосов
/ 21 октября 2011

Во-первых, я бы рассмотрел отказ от стороннего элемента управления, который делает что-то, что расходится с тем, как обычно работает ItemsControl.Ваш контекст данных должен быть вашей моделью представления.Точка.

Тем не менее, вы должны иметь возможность обойти это, если контейнер элемента имеет значение SomeClass, например:

<SomeControl ...>
    <SomeControl.ItemContainerStyle>
        <Style TargetType="SomeClass">
            <Setter Property="IsSelected" Value="{Binding Data.IsSelected, Mode=TwoWay}"/>
        </Style>
    </SomeControl.ItemContainerStyle>
</SomeControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...