2011-07-26 146 views
2

比方说,我有一个名为CarData的复杂属性和一个简单的bool AllowSubmit。 的XAML:wpf/silverlight绑定帮助

<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绑定到与网格属性不同的属性。感谢您的帮助。

回答

2

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

这听起来像你应该做的:

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

这里,文本框钻入CarData使按键的DataContext的不受影响。

+0

非常感谢您的帮助。 – rescueme

+0

显式设置DataContext属性是一种不好的做法,除非您完全知道代码将执行什么操作。我同意CodeNaked解决方案。 –