WPF ViewModel覆盖值在XAML中以声明方式设置

时间:2014-07-11 14:10:09

标签: wpf xaml mvvm user-controls dependency-properties

我有以下用户控件:

<HMIClasses:vhMotor  x:Name="vhDevice" 
                         AutoSize="{Binding AutoSize,Mode=TwoWay}"
                         DeviceColour="{Binding DeviceColour,Mode=TwoWay}" 
                         MotorOn="{Binding MotorOn,Mode=TwoWay}"                             
                         DeviceSize="{Binding DeviceSize,Mode=TwoWay}" 
                         LayoutDirection="{Binding LayoutDirection,Mode=TwoWay}"
                         Speed="{Binding Speed,Mode=TwoWay}"
                         HorizontalAlignment="{Binding HorizontalAlignment,Mode=TwoWay}"
                         VerticalAlignment="{Binding VerticalAlignment,Mode=TwoWay}" 
                         Margin="{Binding Margin,Mode=TwoWay}" >

这与(this)用户控件的datacontext绑定在一起:

   public ucMotor() : base()
        {
            Initialise();
            InitializeComponent();

            this.DataContext = CreateViewModel()
        }

当我将用户控件放在XAML中时,DependenyProperties仅在我编辑时应用。我的意思是,如果我声明用户控件并指定属性:

  <local:ucMotor x:Name="motor1" 
                       DeviceColour="Red"
                       MotorOn="True"
                       Speed="Superspeed"

....当然,控件会响应设计师的变化。

如果我关闭并重新打开表单,控件将显示视图模型的属性,并不反映XAML的属性。例如,视图模型的默认颜色为银色,尽管XAM指定为红色,控件仍显示为银色。如果我编辑XAML,则会以正确的颜色刷新用户控件。

这是我第一次尝试用户控件和依赖属性,所以有人可以告诉我哪里出错了吗?

由于

0 个答案:

没有答案