具有依赖项属性的Usercontrol无法识别更改

时间:2013-12-12 09:23:08

标签: wpf dependency-properties

我有一个自定义类,usercontrol在其后面的代码中实现了依赖属性。

public partial class HandControl
{
    public HandControl()
    {
        InitializeComponent();
    }

    public Seat Seat
    {
        get
        {
            return (Seat)GetValue(SeatProperty);
        }
        set
        {
            SetValue(SeatProperty, value);
        }
    }

    public static readonly DependencyProperty SeatProperty = DependencyProperty.Register("Seat", typeof(Seat), typeof(HandControl), new PropertyMetadata(null));
}

在我的例子中,我将该类中的name属性绑定到usercontrols xaml中的标签。

<Label Content="{Binding Seat.Player.Name, RelativeSource={RelativeSource AncestorType={x:Type controls:HandControl}}}"/>

我的窗口的视图模型包含属性SeatTl,xaml绑定到它:

    public Seat SeatTr
    {
        get { return _seatTr; }
        private set
        {
            _seatTr = value;
            OnPropertyChanged();
        }
    }

    <customControls:HandControl Grid.Row="1"
                                Grid.Column="3"
                                Seat="{Binding SeatTr}" />

但是,当我更改我的类内容(名称属性)并在我的viewmodel(而不是usercontrol)中手动引发OnPropertyChanged时,标签不会更新,但仍然具有相同的内容。

    private void OnSeatChanged(Player player, SeatPosition seatPosition)
    {
        //... doing the changes ...\\
        OnPropertyChanged("SeatTr");
    }

我的问题是什么?有人知道吗?

1 个答案:

答案 0 :(得分:1)

我认为你应该为Seat.Player.Name属性提升OnPropertyChanged,因为它正在被篡改。