如何将对象属性绑定到新窗口中的一组文本框

时间:2016-06-21 16:25:01

标签: c# wpf

我正在创建一个应用程序,当用户点击新窗口中的某个项目时,会将一个对象作为输入参数传递。

private void GridItem_MouseUp(object sender, MouseButtonEventArgs e)
{
    Grid item = (Grid)sender;
    int itemId = Convert.ToInt32(item.Tag) - 1;
    Bill_Overview BO = new Bill_Overview(Bills[itemId]);
    BO.ShowDialog();
    BO.Owner = this;
}

在窗口cs文件中有这样的:

public DBConnection.Bill Bill { get; set; }

public Bill_Overview(DBConnection.Bill bill)
{
    InitializeComponent();
    Bill = bill;
}

并且在Bill_Overview窗口的wpf中,我想绑定Property Bill的每个属性,但无论我尝试过什么都不行。我将此作为我当前的设置,但不起作用。

<Grid DataContext="{Binding Bill}">
    <TextBox Margin="0,28,0,185" Text="{Binding Path=Payer, Mode=TwoWay}" />
    ...
</Grid>

有谁知道如何解决这个问题?我试图寻找一个解决方案,但似乎没有任何工作。

干杯!

1 个答案:

答案 0 :(得分:2)

从xaml

中删除DataContext赋值表达式
class

然后在C#中,执行以下操作:

DataContext="{Binding Bill}"

(DataContext由元素的逻辑子元素继承,因此分配窗口的DataContext会有效地更新所有子元素的DataContext,除非它们设置了自己的值,这就是你对Grid所做的。

此外,由于C#属性 Bill 不是依赖属性,因此分配它不会触发更新,窗口将继续使用初始(null)值。