Я пытаюсь установить контекст данных родительского StackPanel в зависимости от логического значения.
У меня есть логическое значение с именем IsProductMode
.
private bool isProductMode;
public bool IsProductMode
{
get { return isProductMode; }
set { isProductMode = value; RaisePropertyChange("IsProductMode"); }
}
Я хотел сказатьлогическое значение для переключения DataContext из StackPanel и связывания их с моим EditFormSelectedProduct
или EditFormSelectedService
, который имеет свойство Name
, связанное с текстом дочернего TextBox дочерней панели стека.
<StackPanel>
<Label Content="Name" />
<TextBox Text="{Binding Name}" />
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="DataContext" Value="{Binding EditFormSelectedProduct}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsProductMode}" Value="False">
<Setter Property="DataContext" Value="{Binding EditFormSelectedService}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
Что яПробовал:
Я попытался удалить триггер и попытался сначала установить контекст данных на EditFormSelectedProduct
, а затем EditFormSelectedService
.В результате TextBox отображал правильные значения Name
в зависимости от контекста данных.Поэтому, по крайней мере, я доказал, что источники действительно заполнены и что их привязки работают.
На данный момент я временно остановился на наличии двух панелей стека, каждый из которых имеет свой собственный соответствующий контекст данных, и установил их видимость.в зависимости от IsProductMode
.
То, что я ожидал:
Я ожидал, что он установит соответствующий контекст данных в зависимости от логического значения, но он продолжает устанавливаться на EditFormSelectedProduct
независимо от логического значениязначение.