如何进行基本的绑定工作

时间:2015-01-05 13:45:16

标签: c# wpf data-binding

我确定这个(某种)问题已经重复了,所以请不要对我这么辛苦^ _ ^ 我正在黑暗中遇到这个并且无法理解整个画面,因此我不确定该寻找什么。

一张卡片是一个自定义的不可变类,有很多属性(其中一些也是其他类),但为了简化,我们说卡就是这样:

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;
}

如何更新绑定?

1 个答案:

答案 0 :(得分:1)

您还必须更新DataContext

public void SetCard(Card card)
{
    _card = card;
    this.DataContext = _card;
}