2010-11-02 104 views
1

我有一個WindowsFormsHost的可見性基於某些觸發器從「可見」更改爲「摺疊」,反之亦然。我也希望能夠將這個「可見性」綁定到一個變量,因爲我需要能夠查看可見性字段出於某些原因,我不能只是「看」它,因爲他們在兩個不同的項目(持有這個WindowsFormsHost的風格基本上是一個資源項目)。Wpf綁定到WindowsFormHost的可見性

不管怎麼說,我有這樣的:

<WindowsFormsHost Grid.Row="2" Name="PART_ToggleContainer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
    Visibility="{Binding Path=IsVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,Source={StaticResource StatusProvider}}" 
    > 

而且在控制模板父我有一個multitrigger,檢查一對夫婦的依賴性文件,並試圖隱藏表單(和隱藏的作品)。

<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> 

這裏是結合我使用的可視性,「可見性」,在被用作數據提供程序的類。

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使用multitrigger設置)。

謝謝。

回答

0

不知道,如果你想要它是,但你的財產被命名爲bIsVisible和你綁定到一個名爲IsVisible

同時確保OnPropertyChanged參數的變化如此之WPF將檢索新值的屬性相匹配屬性它。