假设我有一个名为CarData的复杂属性和一个简单的bool AllowSubmit。 XAML:
<Grid ..... DataContext={Binding CarData}>
...TextBoxes binded, working
....
last line in the grid:
<Button IsEnabled={Binding AllowSubmit}>
</Grid>
问题是AllowSubmit没有绑定。我认为这是因为网格的DataContext被绑定到CarData属性,因为如果我将按钮放在网格之外它将起作用。另外我想如果我通过将Buttons DataContext设置为AllowSubmit来“覆盖”DataContext将有所帮助,但它将无法工作。我知道这是一个新手问题,但是正确的方法是什么?我很确定可以将Button绑定到与网格属性不同的属性。谢谢你的帮助。
答案 0 :(得分:2)
DataContext属性由其中的控件继承。因此,如果你在Grid上更改它,那么它也会在内部的所有控件上有效地改变它。
听起来你应该这样做:
<Grid>
<TextBox Text="{Binding CarData.Make}" />>
<Button IsEnabled="{Binding AllowSubmit}" />>
<Grid>
这里,TextBox钻入CarData,因此Button的DataContext不受影响。