Se necesita una propiedad de dependencia para esto:
public BindingList<User> Users
{
get { return (BindingList<User>)GetValue(UsersProperty); }
set { SetValue(UsersProperty, value); }
}
public static readonly DependencyProperty UsersProperty =
DependencyProperty.Register("Users", typeof(BindingList<User>),
typeof(OptionsDialog));
Una vez hecho esto, se asocia la casilla a la propiedad de dependencia:
<CheckBox x:Name="myCheckBox" IsChecked="{Binding ElementName=window1,
Path=CheckBoxIsChecked}" />
Para que esto funcione hay que nombrar a su ventana o control de usuario en su etiqueta de inicio, y el uso de ese nombre en la ElementName parámetro.
Con este código, cada vez que cambie la propiedad en el lado del código, cambiará el cuadro de texto. Además, cada vez que marque/desmarque el cuadro de texto, la Propiedad de dependencia también cambiará.
EDIT:
Una manera fácil de crear una propiedad de dependencia está escribiendo el propdp fragmento, que le dará el código general de las propiedades de dependencia.
Todo el código:
XAML:
<Window x:Class="StackOverflowTests.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" x:Name="window1" Height="300" Width="300">
<Grid>
<StackPanel Orientation="Vertical">
<CheckBox Margin="10" x:Name="myCheckBox"
IsChecked="{Binding ElementName=window1, Path=IsCheckBoxChecked}"
>Bound CheckBox</CheckBox>
<Label Content="{Binding ElementName=window1, Path=IsCheckBoxChecked}"
ContentStringFormat="Is checkbox checked? {0}"></Label>
</StackPanel>
</Grid>
</Window>
C#:
using System.Windows;
namespace StackOverflowTests
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public bool IsCheckBoxChecked
{
get { return (bool)GetValue(IsCheckBoxCheckedProperty); }
set { SetValue(IsCheckBoxCheckedProperty, value); }
}
// Using a DependencyProperty as the backing store for
//IsCheckBoxChecked. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsCheckBoxCheckedProperty =
DependencyProperty.Register("IsCheckBoxChecked", typeof(bool),
typeof(Window1), new UIPropertyMetadata(false));
public Window1()
{
InitializeComponent();
}
}
}
Note como el único código subyacente es la propiedad de dependencia. Tanto la etiqueta como la casilla de verificación están ligadas a ella. Si la casilla de verificación cambia, la etiqueta también cambia.
Gracias por la respuesta. Parece que "ElementName" fue el ingrediente clave que falta. – Number8
Me alegro de haber podido ayudar =) – Carlo
Esto funcionará, pero no es cierto que "se necesita una propiedad de dependencia para esto". Vea las soluciones a continuación ... todo lo que necesita es una propiedad en su modelo de vista para enlazar. –