2011-07-26 16 views
2

私はCarDataと単純なbool AllowSubmitという複雑なプロパティを持っているとしましょう。 XAML:wpf/silverlight binding help

<Grid ..... DataContext={Binding CarData}> 
...TextBoxes binded, working 
.... 

last line in the grid: 
<Button IsEnabled={Binding AllowSubmit}> 
</Grid> 

問題がAllowSubmitがバインドされていないということです。グリッドの外にボタンを置くとグリッドのDataContextがCarDataプロパティにバインドされているためだと思います。また、もし私が "AllowSubmit"ボタンのDataContextを設定することによってDataContextを "オーバーライド"すれば、それはうまくいかないと思った。私はそれがかなり初心者の質問であることを知っていたが、行くために適切な方法は何ですか?私は、ボタンをグリッドのプロパティとは異なるプロパティにバインドすることが可能であると確信しています。ご協力ありがとうございました。

答えて

2

DataContextプロパティは、その内部のコントロールによって継承されます。 Grid上でそれを変更すると、内部のすべてのコントロールで効果的に変更されます。

あなたがやるべきことのように聞こえる:

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

ここでは、TextBoxのドリルをCarDataにボタンのDataContextのは、影響を受けないようにします。

+0

ありがとうございました。 – rescueme

+0

DataContextプロパティを明示的に設定することは、コードが行うことを完全に理解していない限り、悪い習慣です。私はCodeNakedソリューションに同意します。 –