Как ссылаться на локальное свойство, если для DataContext установлено значение Ancestor win WPF / Xaml - PullRequest
0 голосов
/ 07 мая 2019

У меня есть несколько полей UserControl, которые предоставляют текстовое поле внутри пользовательского элемента управления.Я ссылаюсь на UserControl как:

<UserControl 
DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}" />

Я устанавливаю его на это, потому что мои UserControls находятся в модели представления, которые имеют некоторые общие команды и т. Д., Поэтому я могу связать эти свойства с моей внешней ViewModel:

Работает как нужно.Проблема в том, что каждый UserControl имеет свою собственную модель представления для отслеживания таких вещей, как свойство Value:

<UserControl 
IsInDesignMode="{Binding IsInDesignMode}" 
Text="{Binding Value}" 
DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}" />

Если я использую:

<UserControl 
IsInDesignMode="{Binding IsInDesignMode, RelativeSource={RelativeSource AncestorType=UserControl}}" 
ControlText="{Binding DataContext.Value}"  />

или

<UserControl 
IsInDesignMode="{Binding DataContext.IsInDesignMode, RelativeSource={RelativeSource AncestorType=UserControl}}" 
ControlText="{Binding DataContext.Value}" 
 />

ControlText должным образом привязывается к значению viewmodel объекта UserControl, так что это кажется правильным подходом, но IsInDesignMode не будет привязываться к тому же представлению / модели представления, что и при наличии DataContext = из первой версии.

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