我正在创建一个应用程序,当用户点击新窗口中的某个项目时,会将一个对象作为输入参数传递。
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>
有谁知道如何解决这个问题?我试图寻找一个解决方案,但似乎没有任何工作。
干杯!
答案 0 :(得分:2)
从xaml
中删除DataContext赋值表达式class
然后在C#中,执行以下操作:
DataContext="{Binding Bill}"
(DataContext由元素的逻辑子元素继承,因此分配窗口的DataContext会有效地更新所有子元素的DataContext,除非它们设置了自己的值,这就是你对Grid所做的。
此外,由于C#属性 Bill 不是依赖属性,因此分配它不会触发更新,窗口将继续使用初始(null)值。