wpf / silverlight绑定帮助

时间:2011-07-26 15:58:39

标签: wpf silverlight xaml binding datacontext

假设我有一个名为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绑定到与网格属性不同的属性。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

DataContext属性由其中的控件继承。因此,如果你在Grid上更改它,那么它也会在内部的所有控件上有效地改变它。

听起来你应该这样做:

<Grid>
    <TextBox Text="{Binding CarData.Make}" />>
    <Button IsEnabled="{Binding AllowSubmit}" />>
<Grid>

这里,TextBox钻入CarData,因此Button的DataContext不受影响。