Vous avez besoin d'une propriété de dépendance pour cela:
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));
Une fois cela fait, vous lier la case à la propriété de dépendance:
<CheckBox x:Name="myCheckBox" IsChecked="{Binding ElementName=window1,
Path=CheckBoxIsChecked}" />
Pour cela fonctionne, vous devez nommer votre fenêtre ou UserControl dans sa balise ouvrante, et utiliser ce nom dans le ElementName paramètre.
Avec ce code, lorsque vous modifiez la propriété du côté du code, vous modifiez la zone de texte. De plus, chaque fois que vous cochez/décochez la case, la propriété de dépendance changera aussi.
EDIT:
Un moyen facile de créer une propriété de dépendance est de taper un propdp d'extrait, qui vous donnera le code général des propriétés de dépendance.
Tout le code:
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();
}
}
}
Remarquez comment le seul code est derrière la propriété de dépendance. L'étiquette et la case à cocher y sont liées. Si la case à cocher change, l'étiquette change également.
Merci pour la réponse. Il semble que "ElementName" soit l'ingrédient clé manquant. – Number8
Heureux que je pourrais aider =) – Carlo
Cela fonctionnera, mais il n'est pas vrai que "vous avez besoin d'une propriété de dépendance pour cela." Voir les solutions ci-dessous ... tout ce dont vous avez besoin est une propriété sur votre viewmodel à lier. –