我确定这个(某种)问题已经重复了,所以请不要对我这么辛苦^ _ ^ 我正在黑暗中遇到这个并且无法理解整个画面,因此我不确定该寻找什么。
一张卡片是一个自定义的不可变类,有很多属性(其中一些也是其他类),但为了简化,我们说卡就是这样:
public class Card
{
public string Name { get; private set; }
public int Power { get; private set; }
private Card() { }
public Card(string name, int power)
{
Name = name;
Power = power;
}
}
CardView是UserControl
,表示用户界面上的卡片。它附有一张卡片。
XAML:
<UserControl ... yadayada ...>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0">Name: </TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Name}" />
<TextBlock Grid.Column="0" Grid.Row="1">Power: </TextBlock>
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding Power}" />
</Grid>
</UserControl>
代码背后:
public partial class CardView : UserControl
{
public static readonly DependencyProperty CardProperty = DependencyProperty.Register("Card", typeof(Card), typeof(CardView));
private Card _card;
public CardView()
{
InitializeComponent();
_card = new Card("Chuck", 999);
this.DataContext = _card;
}
}
它在创建时显示正确的值,但我错过了允许我在运行时交换卡的最后一步。
修改 如果我没有解释清楚,这就是我希望能够做到的:
假设我将此方法添加到CardView:
public void SetCard(Card card)
{
_card = card;
}
如何更新绑定?
答案 0 :(得分:1)
您还必须更新DataContext
:
public void SetCard(Card card)
{
_card = card;
this.DataContext = _card;
}