StackPanel
の場合にのみ表示したい がありますSomeTabControl.SelectedItem != null
。WPFバインディングでこれを行うにはどうすればよいですか?
5123 次
2 に答える
13
スタイルとトリガーを使用して、コンバーターなしで実行できます。
<StackPanel>
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger
Binding="{Binding SelectedItem,ElementName=tabControl1}"
Value="{x:Null}">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
<Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
この例では、デフォルトで StackPanel を表示しますが、tabControl1 の SelectedItem が null の場合は非表示にします。
于 2009-07-21T11:27:42.293 に答える
5
null許容値をSystem.Windows.Visibility値に変換するコンバーターを作成し、それをバインディングで使用します。
例えば:
<StackPanel x:Name="myPanel" Visibility="{Binding Path=SelectedItem, Mode=OneWay, ElementName=SomeTabControl, Converter={StaticResource visibilityConverter}}" />
コンバータークラスのコード:
public class VisibilityConverter : IValueConverter
{
#region [ IValueConverter ]
public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
if( value == null )
return System.Windows.Visibility.Collapsed;
return System.Windows.Visibility.Visible;
}
public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
throw new NotSupportedException( );
}
#endregion
}
PSこれは、コントロールのXAMLにvisibilityConverterという名前の静的リソースがあることを前提としています。
于 2009-07-21T11:03:15.840 に答える