Potrzebny jest do tego właściwość zależność:
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));
Gdy to zrobisz, możesz powiązać pole do właściwości zależność:
<CheckBox x:Name="myCheckBox" IsChecked="{Binding ElementName=window1,
Path=CheckBoxIsChecked}" />
Za to do pracy trzeba wymienić okna lub UserControl w jego openning tag i używać tej nazwy w ElementName parametr.
Za pomocą tego kodu, za każdym razem, gdy zmienisz właściwość po stronie kodowej, zmienisz pole tekstowe. Ponadto, gdy zaznaczysz/odznacz pole tekstowe, właściwość Dependency również się zmieni.
EDIT:
Łatwym sposobem utworzyć właściwość zależność jest wpisanie propdp urywek, który daje ogólny kod dla właściwości zależności.
Cały kod:
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();
}
}
}
Wskazówki, jak tylko kod związany jest Dependency nieruchomości. Zarówno etykieta, jak i pole wyboru są z nią związane. Jeśli pole wyboru zmieni się, etykieta również się zmieni.
Dzięki za odpowiedź. Wygląda na to, że "ElementName" był brakującym kluczowym składnikiem. – Number8
Cieszę się, że mogę pomóc =) – Carlo
To zadziała, ale nie jest prawdą, że "do tego potrzebna jest właściwość zależności". Zobacz rozwiązania poniżej ... wszystko, czego potrzebujesz to wszystko, do czego chcesz się zmusić. –