2013-03-28 8 views
5

ラベルの内容に基づいて表示するスタックパネルがあります。なぜそれが私のために働いていないのか分かりません。太字で強調表示されているのは、私が隠したいものです。なにか提案を?スタックパネルの可視性がラベルの内容に基づいていない

<StackPanel Orientation="Horizontal"> 
<Label Nane="lblCarrier" Content="{Binding Path=Carrier}" /> 
**<StackPanel Orientation="Horizontal"> 
    <StackPanel.Style> 
     <Style TargetType="StackPanel"> 
      <Setter Property="Visibility" Value="Visible" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Content, ElementName=lblCarrier}" Value=""> 
        <Setter Property="Visibility" Value="Hidden" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
    <Label x:Name="lblCarrierGrade" Content="Grade Carrier:" /> 
    <TextBox x:Name="txtCarrierGrade1" /> 
    <TextBox x:Name="txtCarrierGrade2" /> 
</StackPanel>** 

答えて

8

String.EmptyではなくContentがヌルである可能性があります。

あなたはあなたの提案のためのTargetNullValue

<DataTrigger Binding="{Binding Content, ElementName=lblCarrier,TargetNullValue=''}" Value=""> 
     <Setter Property="Visibility" Value="Hidden" /> 
</DataTrigger> 
+1

ありがとうございます。 "TargetNullValue = ''"はそれを動作させたものです。 – user1884032

+0

+1私もその点を知らなかった。 –

1

コンバータを使用しないのはなぜ?あなたはこのようなプロジェクトにクラスファイルを追加します。

class VisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return string.IsNullOrEmpty(value as string) ? Visibility.Hidden : Visibility.Visible; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

をごWindow定義では、これを追加します。

xmlns:myNamespace="clr-namespace:[YourProjectName]" 

を次にどこかのリソースに今、この

<myNamespace:VisibilityConverter x:Key="myConverter"/> 

を追加し、あなたがそれを使用することができます:

<Style TargetType="StackPanel"> 
     <Setter Property="Visibility" 
       Value="{Binding Content, ElementName=lblCarrier, 
           Converter = {StaticResources myConverter}}"/> 
+0

感謝を使用して試みることができます。私はそれを感謝しますが、私はもっと簡単に何かをしなくても、より多くのことをする必要はありませんでした。 – user1884032

+0

OK。私はその答えを好むだろう。 :-) –

関連する問題