2009-07-21 11 views

cevap

13

Bir stil ve tetiği kullanarak bir dönüştürücü olmadan bunu yapabilir.

+0

Mükemmel, teşekkürler! –

5

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:

+0

Kendi yazıcınızı yazmak yerine yerleşik BoolToVisiblityConverter kullanabilirsiniz. http://msdn.microsoft.com/en-us/library/system.windows.controls.booleantovisibilityconverter.aspx – Andy

+1

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