Wpf绑定到WindowsFormsHost的可见性

时间:2010-11-02 19:50:46

标签: c# wpf binding

我有一个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使用多重触发器设置。

感谢。

1 个答案:

答案 0 :(得分:0)

不确定您是否打算这样做,但您的属性名为bIsVisible,并且您对名为IsVisible的属性的绑定

还要确保OnPropertyChanged参数与正在更改的属性匹配,以便WPF从中检索新值。