我有一个WindowsFormsHost,其可见性从“Visible”变为“Collapsed”,反之亦然,基于某些触发器。我还希望能够将此“可见性”绑定到变量,因为我需要能够查看“可见性”字段,出于某些原因,我不能只是“看”它,因为它们位于两个不同的项目中(持有此WindowsFormsHost的样式基本上是一个资源项目。)
无论如何,我有这个:
<WindowsFormsHost Grid.Row="2" Name="PART_ToggleContainer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Visibility="{Binding Path=IsVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,Source={StaticResource StatusProvider}}"
>
在控件模板中,我有一个多项目,它会检查几个依赖项字段并尝试隐藏表单(以及隐藏工作)。
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsBeingDragged" Value="True"/>
<Condition Property="IsWorking" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="IsVisibleDProp" Value="False"/>
<Setter TargetName="PART_ToggleContainer" Property="Visibility" Value="Collapsed" />
</MultiTrigger>
</ControlTemplate.Triggers>
这是我用于Visibility的绑定,“IsVisible”,在用作数据提供者的类中。
private Visibility IsVisibleProperty = Visibility.Visible;
public bool bIsVisible
{
get { return bIsVisibleProperty; }
set
{
if (bIsVisibleProperty == value)
{
return;
}
bIsVisibleProperty = value;
OnPropertyChanged("IsVisible");
}
}
属性更改时不会触发setter。
任何线索?
我还尝试了一种解决方法,设置这个“IsVisibleDProp”依赖项,它位于与“IsBeingDragged”和“IsWorking”相同的位置,但它也从未命中过setter(尽管我以编程方式设置了另外两个,并且IsVisibleDPropis使用多重触发器设置。
感谢。
答案 0 :(得分:0)
不确定您是否打算这样做,但您的属性名为bIsVisible
,并且您对名为IsVisible
的属性的绑定
还要确保OnPropertyChanged参数与正在更改的属性匹配,以便WPF从中检索新值。