2012-03-06 14 views
23

Quiero que el SaveButton de mi formulario desaparezca cuando el formulario esté deshabilitado. yo que de esta manera:¿Cómo vincular la propiedad de un control a la propiedad de otro control?

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

¿No hay una manera de unir esas propiedades en el XAML? ¿Hay una mejor manera de hacerlo?

Respuesta

55

Sí. Debería poder vincular el IsEnabled del panel de pila con la propiedad Visibilidad de su botón. Sin embargo, necesitas un convertidor. WPF viene con una clase BooleanToVisibilityConverter que debería hacer el trabajo.

<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

Si en lugar de un togglebutton, tengo un control personalizado (digamos CustomControl) que tiene una togglebutton luego pueden hacer lo mismo, excepto ElementName = CustomControl.togglebutton? – pasha

Cuestiones relacionadas