Wpf值未传递给viewmodel

时间:2014-10-21 07:46:56

标签: c# wpf xaml mvvm

我有一个带文本框的usercontrol。文本框文本属性的绑定方式如下:

<TextBox Background="{Binding Path=Background, ElementName=_this}">
    <TextBox.Text>
        <Binding ElementName="_this"
                 Path="VisibleValue"
                 UpdateSourceTrigger="PropertyChanged"
                 Mode="TwoWay"
                 ValidatesOnExceptions="True">
        </Binding>
    </TextBox.Text>
</TextBox>

代码隐藏:

public String VisibleValue
    {
        get { return _visibleValue; }

        set
        {
            if (_visibleValue == value) { return; }

            _visibleValue = value;

            SetValue(value);

            RaisePropertyChanged("VisibleValue");
        }
    }

&#39; SetValue&#39;方法尝试将字符串转换为int,double等...并设置依赖属性&#39;值&#39;。 (如果输入字符串为null或为空,则&#39; Value&#39;属性将设置为null)。

 public const string ValuePropertyName = "Value";    

public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
        ValuePropertyName,
        typeof(Object),
        typeof(NumericInput),
        new UIPropertyMetadata(null, OnValueChangedCallback));

 public Object Value
    {
        get
        {
            return (Object)GetValue(ValueProperty);
        }
        set
        {
            SetValue(ValueProperty, value);
        }
    }

现在在另一个视图中我使用此用户控件并且我绑定了value属性:

<sharedControls:NumericInput Type="{x:Type sys:UInt16}"
                             Value="{Binding VehicleLine, TwoWay, PropertyChanged}"/>

viewmodel中的VehicleLine属性:

 public ushort VehicleLine
    {
        get { return this.vehicleLine; }

        set
        {
            if (this.vehicleLine == value) { return; }

            this.vehicleLine = value;

            RaisePropertyChanged("VehicleLine");
            RaiseVariantInfoChanged();
        }
    }

我现在的问题是:如果我在文本框中输入一个随机数字,如1,2,3,4,那么该值就会传递给我的车辆号码。但是如果文本框为空,则Value依赖项属性设置为null,但不会将其传递给我的vehicleline属性。永远不会调用此属性的setter。

任何人都可以解释我为什么吗?

注意:即使我将vehicleline属性类型更改为object,也不会调用setter。

提前谢谢你!

0 个答案:

没有答案