2011-12-21 94 views
0

這工作XAML的DataContext

<Border> 
    <StackPanel> 
     <TextBlock Text="{Binding Foo.Info1}" /> 
     <TextBlock Text="{Binding Foo.Info2}" /> 
    </StackPanel> 
</Border> 

但這並不

<Border DataContext="Foo"> 
    <StackPanel> 
     <TextBlock Text="{Binding Info1}" /> 
     <TextBlock Text="{Binding Info2}" /> 
    </StackPanel> 
</Border> 

我的理解是,如果你設置了家長的datacontext,孩子們將能夠綁定到屬性。邊界不是成爲父母的好元素嗎? 我對XAML中的數據綁定非常陌生。有人能告訴我爲什麼第二次剪斷不起作用並指向正確的方向嗎?

+0

我找到了@ProfessorChaos,這就是爲什麼我刪除我的評論 – 2011-12-21 16:43:45

+0

@ArsenMkrt謝謝。 upvoted all。系統讓我儘快接受答案。 – 2011-12-21 16:45:47

回答

1

使用

<Border DataContext="{Binding Foo}"> 

沒有約束力邊框的DataContext的只不過是「富」的字符串,它不具有任何信息1,信息2性能

希望這有助於

1

讓我隱患一個猜測在這裏,你仍然需要綁定到DataContext,而不是簡單地將XAML看作是一個字符串「Foo」:

<Border DataContext="{Binding Foo}"> 
    <StackPanel> 
    <TextBlock Text="{Binding Info1}" /> 
    <TextBlock Text="{Binding Info2}" /> 
    </StackPanel> 
</Border> 
1

你的語法錯誤,你應該寫:

<Border DataContext="{Binding Foo}"> 
    <StackPanel> 
     <TextBlock Text="{Binding Info1}" /> 
     <TextBlock Text="{Binding Info2}" /> 
    </StackPanel> 
</Border> 
0
<Border DataContext="{Binding Foo}"> 
    <StackPanel> 
     <TextBlock Text="{Binding Info1}" /> 
     <TextBlock Text="{Binding Info2}" /> 
    </StackPanel> 
</Border> 

上面現在將意味着Info1Info2將存在於DataContext,在這種情況下,現在勢必Foo

像你這樣設置DataContext; <Border DataContext="Foo">將導致DataContext屬性返回Foo

<Border DataContext="Foo"> 
    <StackPanel> 
     <TextBlock Text="{Binding}" /> 
     <TextBlock Text="{Binding}" /> 
    </StackPanel> 
</Border> 

如果你嘗試上面的代碼都TextBlock的將返回

相關問題