2012-03-06 11 views
23

Voglio che il SaveButton dal mio modulo scompaia quando il modulo è disabilitato. lo faccio in questo modo:Come associare la proprietà di un controllo a una proprietà di un altro controllo?

this.formStackPanel.IsEnabled = someValue; 
if(this.formStackPanel.IsEnabled) 
{ 
    this.saveButton.Visibility = Visibility.Visible; 
} 
else 
{ 
    this.saveButton.Visibility = Visibility.Collapsed; 
} 

non c'è un modo di legare tali proprietà in XAML? C'è un modo migliore per farlo?

risposta

55

Sì. Dovresti essere in grado di associare IsEnabled dello stackpanel alla proprietà Visibility del tuo pulsante. Tuttavia, è necessario un convertitore. WPF viene fornito con una classe BooleanToVisibilityConverter che dovrebbe svolgere il lavoro.

<Window 
    x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Window.Resources> 
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
    </Window.Resources> 
    <StackPanel> 
    <ToggleButton x:Name="toggleButton" Content="Toggle"/> 
    <TextBlock 
     Text="Some text" 
     Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
    </StackPanel> 
</Window> 
+0

Se invece di un ToggleButton, ho un controllo personalizzato (diciamo CustomControl) che ha una ToggleButton quindi può fare la stessa cosa, tranne ElementName = CustomControl.togglebutton? – pasha

Problemi correlati