wpf - ¿Cómo puedo enlazar a la propiedad de otro control desde un desencadenador?
xaml triggers (2)
En mi caso particular, quiero enlazar a la propiedad IsReadOnly de un TextBox para establecer la propiedad Content de un botón? Ambos son parte del mismo StackPanel.
He intentado hacerlo con un DataTrigger con un enlace al ElementName del TextBox y un Trigger usando el nombre del TextBox como SourceName.
¿Alguna idea?
¿Has probado esto?
<StackPanel x:Name="LayoutRoot">
<Button Width="75" Content="{Binding IsReadOnly, ElementName=textBox, Mode=Default}" />
<TextBox x:Name="textBox" VerticalAlignment="Top" Text="TextBox" />
</StackPanel>
??
Debe especificar el desencadenador como parte de un estilo: la colección Triggers en el botón solo puede contener desencadenantes de eventos. Con eso en mente, un DataTrigger funciona bien. Sin embargo, hay una arruga: el valor del Trigger Setter no sobrescribirá una propiedad de contenido local. Por lo tanto, también debe establecer el contenido predeterminado en el estilo. Así es como se ve:
<Button> <!-- Note no content set directly on button -->
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="You may write!!!" /> <!-- Here is the ''normal'' content -->
<Style.Triggers>
<!-- Here is how we bind to another control''s property -->
<DataTrigger Binding="{Binding IsReadOnly, ElementName=textBox}" Value="True">
<Setter Property="Content" Value="NO NO NO" /> <!-- Here is the ''override'' content -->
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>