StackPanel
var, yalnızca SomeTabControl.SelectedItem != null
olduğunda görünür yapmak istiyorum. Bunu WPF bağlamada nasıl yaparım?wpf databind IsVisible için TabControl.SelectedItem! = Null
cevap
Bir stil ve tetiği kullanarak bir dönüştürücü olmadan bunu yapabilir.
NULL değerli bir değeri System.Windows.Visibility değerine dönüştüren ve bunu bağlayıcınızda kullanan bir dönüştürücü oluşturun.
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
}
Dip not: dönüştürücü sınıf için
<StackPanel x:Name="myPanel" Visibility="{Binding Path=SelectedItem, Mode=OneWay, ElementName=SomeTabControl, Converter={StaticResource visibilityConverter}}" />
Kodu: Mesela
Bu, kontrolünüzün XAML'sinde visibilityConverter adında statik bir kaynak olduğunu varsayar.
<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>
Bu örnek, varsayılan olarak StackPanel gösterir, ancak TabControl1 üzerinde SelectedItem null olduğunda o zaman gizler:
Kendi yazıcınızı yazmak yerine yerleşik BoolToVisiblityConverter kullanabilirsiniz. http://msdn.microsoft.com/en-us/library/system.windows.controls.booleantovisibilityconverter.aspx – Andy
BoolToVisibilityConverter nasıl dönüştürülebilir? = null Visible? Ya doğru ya da yanlış olsaydım onu alırım. Ama! = Null? – azazeal
Mükemmel, teşekkürler! –