Hai bisogno di una proprietà di dipendenza per questo:
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 volta fatto ciò, si associa il casella di controllo per la proprietà di dipendenza:
<CheckBox x:Name="myCheckBox" IsChecked="{Binding ElementName=window1,
Path=CheckBoxIsChecked}" />
Per funzionare è necessario chiamare il vostro finestra o UserControl nel suo tag openning, e usare quel nome nel ElementName parametro.
Con questo codice, ogni volta che si modifica la proprietà sul lato codice, si modifica la casella di testo. Inoltre, ogni volta che si seleziona/deseleziona la casella di testo, anche la proprietà dipendenze cambierà.
EDIT:
Un modo semplice per creare una proprietà di dipendenza è digitando il propdp frammento, che vi darà il codice generale per proprietà di dipendenza.
Tutto il codice:
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();
}
}
}
Notate come l'unico codice dietro è la proprietà di dipendenza. Sia l'etichetta che la casella di controllo sono associate ad essa. Se la casella di controllo cambia, anche l'etichetta cambia.
Grazie per la risposta. Sembra che "ElementName" fosse l'ingrediente chiave mancante. – Number8
Glad I could help =) – Carlo
Funzionerà, ma non è vero che "hai bisogno di una proprietà di dipendenza per questo". Vedi le soluzioni di seguito ... tutto ciò di cui hai bisogno è una proprietà sul tuo viewmodel da associare. –