2012-03-07 168 views
4

我創建了一個狀態欄:設置父屬性兒童在WPF

<StatusBar> 
     <StatusBarItem > 
      <WrapPanel> 
       <Image Source="/MyApp;component/Images/icon.png" /> 
       <TextBlock Name="_StatusbarUser" Text="Username" /> 
      </WrapPanel> 
     </StatusBarItem> 
    </StatusBar> 

如何創建一個觸發器,當我設置的文本塊知名度崩潰, 它還將TRIGER父狀態條可見。

我已經嘗試使用風格波紋管,但沒有奏效

<StatusBar Grid.Row="2" Name="_Statusbar"> 
     <StatusBar.Resources> 
      <Style TargetType="{x:Type StatusBarItem}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TextBlock}}, Path=Visibility}" Value="Collapsed"> 
         <Setter Property="Visibility" Value="Collapsed"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </StatusBar.Resources> 
     <StatusBarItem> 
      <WrapPanel> 
       <Image Source="/MyApp;component/Images/icon.png" /> 
       <TextBlock Name="_StatusbarUser" Text="Username" /> 
      </WrapPanel> 
     </StatusBarItem> 
    </StatusBar> 

請幫助,THX

+1

我不瞭解你的代碼。觸發器會在TextBlock的可見性崩潰時觸發,然後也想要將StatusbarItem的可見性設置爲摺疊。另外RelativeSource會向上移動樹,但是TextBlock是StatusBar的子項,所以這不起作用。你可以嘗試使用TargetName,但是我不知道你在做什麼。 – dowhilefor 2012-03-07 10:47:58

+0

謝謝,它通過將父項屬性綁定到子屬性(來自LPL)來解決。想法是我想創建一個狀態欄與圖像,我只想從我的代碼訪問文本塊,設置文本內容,它的可見性。但是,當我摺疊的texblock,圖像仍然存在。所以我想設置父元素(statusbaritem)摺疊爲。 – 2012-03-08 03:08:21

回答

3

更好的結合parent屬性子屬性:

<StatusBar> 
    <StatusBarItem Visibility="{Binding ElementName=_StatusbarUser, Path=Visibility}"> 
     <WrapPanel> 
      <Image Source="/MyApp;component/Images/icon.png" /> 
      <TextBlock Name="_StatusbarUser" Text="Username" /> 
     </WrapPanel> 
    </StatusBarItem> 
</StatusBar> 
+0

謝謝,這對我來說很有用。 – 2012-03-08 03:04:07