2014-10-08 23 views
1

我想有一個StackPanel誰的知名度應該取決於組合框的選擇。不幸的是下面的XAML不起作用。StackPanel的可視性取決於組合框選擇

我發現,這將在組合框中選擇的PropertyChanged事件來設置,但我寧願這個嚴格的XAML解決方案的新屬性的解決方案。

如何解決這個任何提示?

<StackPanel> 
    <Label>Picture in Picture function</Label> 
    <ComboBox Name="cbPictureInPicture" ItemsSource="{Binding Path=PictureInPictureCodeList, Mode=OneWay}" DisplayMemberPath="CodeText" 
     SelectedValuePath="CodeID" SelectedValue="{Binding Path=PictureInPicture, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
</StackPanel> 
<StackPanel> 
    <StackPanel.Style> 
     <Style TargetType="StackPanel"> 
      <Setter Property="Visibility" Value="Visible" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=IsSelected.CodeText}" Value="Yes"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
    <Label>Picture in Picture is used</Label> 
    (...) 
</StackPanel> 

回答

1

你也許會重寫一樣

<DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=SelectedItem.CodeText}" Value="Yes"> 
    <Setter Property="Visibility" Value="Hidden"/> 
</DataTrigger> 

假設組合框被綁定到一個集合,其項目具有代碼文本屬性。所以SelectedItem.CodeText將指向相同。

附加地,可以不需要設置<Setter Property="Visibility" Value="Visible" />,因爲它是默認值。它並沒有在這種情況下,代碼只是一些額外的線,可以刪除任何影響。

+0

我用IsSelected代替的SelectedItem。感謝提示! – RobaL 2014-10-08 07:56:18

+0

太棒了!快樂編碼:) – pushpraj 2014-10-08 08:12:13

-2
  1. 創建標誌並在堆棧面板可見性轉換器中傳遞此標誌。
  2. 在轉換器標誌的基礎上做出決定stackpanel可見/隱藏任何
  3. 如果根據您的要求選擇了值,將此平面設置爲組合框選擇更改事件。
1

你也可以使用一個轉換器和直接綁定到PictureInPicture屬性:

<StackPanel Visibility="{Binding PictureInPicture, Converter={StaticResource myVisibilityConverter}}"/> 
    <Label>Picture in Picture is used</Label> 
    (...) 
</StackPanel> 
相關問題