Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Control XAML:
- <UserControl x:Class="DPTest.Control" Name="Root">
- <UserControl.DataContext>
- <local:ControlViewModel Test="{Binding MyDependencyProperty, ElementName=Root, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
- </UserControl.DataContext>
- <StackPanel>
- <TextBox Text="{Binding Test, UpdateSourceTrigger=PropertyChanged}" />
- <Button Content="Click me to change ViewModel.Test value to 1234" Command="{Binding ClickCommand}" />
- </StackPanel>
- </UserControl>
- Control code:
- namespace DPTest
- {
- /// <summary>
- /// Interaction logic for Control.xaml
- /// </summary>
- public partial class Control : UserControl
- {
- public Control()
- {
- InitializeComponent();
- }
- public static readonly DependencyProperty MyDependencyPropertyProperty = DependencyProperty.Register(
- "MyDependencyProperty",
- typeof(string),
- typeof(Control),
- new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnPropertyChanged)
- );
- public string MyDependencyProperty
- {
- get { return (string)GetValue(MyDependencyPropertyProperty); }
- set { SetValue(MyDependencyPropertyProperty, value); }
- }
- private static void OnPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
- {
- // never fired
- }
- }
- }
- ControlViewModel:
- class ControlViewModel : DependencyObject
- {
- public static readonly DependencyProperty TestProperty = DependencyProperty.Register(
- "Test",
- typeof(string),
- typeof(ControlViewModel),
- new FrameworkPropertyMetadata("start value", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnPropertyChanged)
- );
- public string Test
- {
- get { return (string)GetValue(TestProperty); }
- set { SetValue(TestProperty, value); }
- }
- public ICommand ClickCommand { get; set; }
- public ControlViewModel()
- {
- ClickCommand = new DelegateCommand(OnClickCommand);
- }
- private void OnClickCommand()
- {
- Test = "1234";
- }
- private static void OnPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
- {
- }
- }
- Test Window:
- <StackPanel>
- <local:Control MyDependencyProperty="{Binding Path=Text, ElementName=CheckDP, UpdateSourceTrigger=PropertyChanged}" />
- <TextBox Name="CheckDP" />
- </StackPanel>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement