我有一个自定义类,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");
}
我的问题是什么?有人知道吗?
答案 0 :(得分:1)
我认为你应该为Seat.Player.Name属性提升OnPropertyChanged,因为它正在被篡改。