2013-09-24 41 views
2

我已經實現了一個WPF用戶控件,我想在這裏實現的是在主網格上的鼠標懸停時,應該隱藏一些堆棧面板。我需要有多個觸發條件。儘管到處看,我無法找到我做錯了什麼。用戶控件資源是如下MultiDataTrigger不能與綁定路徑條件工作

<UserControl.Resources> 
    <Style x:Key="StackViewStyle" TargetType="{x:Type StackPanel}"> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=IsMouseOver}" Value="True" /> 
        <Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource Self}}" Value="Uploading" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Visibility" Value="Collapsed"/> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Resources> 

數據綁定工作正常,因爲當我把一個測試標籤,以檢查它的價值,這是「上傳」。如果我刪除FileState條件它開始工作。我使用它作爲

<StackPanel Name="StackViewCount" Style="{StaticResource StackViewStyle}"> 
    ... 
</StackPanel> 

雖然看輸出窗口,我發現這個錯誤

​​

所以,我怎麼能知道的結合,尋找FileState在用戶控件不StackPanel中

現在,當我改變條件到

<Condition Binding="{Binding Path=FileState}" Value="Uploading" /> 

我沒有看到任何錯誤,但仍然沒有窩RK。

+0

FileState是StackPanel中的屬性? –

+0

不,它是UserControl的一個屬性。 @DJ我想我錯過了這裏的觀點,我怎麼能使用usercontrol的綁定。正如我已經嘗試「{綁定路徑= FileState}」。 –

+0

'FileState'是否說'上傳'或'上傳'?請注意,案件很重要。另外,檢查輸出窗口是否有錯誤。 – PoweredByOrange

回答

2

由於FileState是你UserControl的財產,它是StackPanel始祖,你必須像bind to ancestor

<Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="Uploading" />