2015-06-05 81 views
5

我已經花了最近幾天來追蹤這個bug。我的綁定被分離,我不知道爲什麼。當我的應用程序啓動時,我希望我的一個文本框具有焦點。所以我使用了一個附加屬性來設置焦點元素。我的一些數據綁定停止工作。FocusManager會破壞WPF數據綁定 - 爲什麼?

由於某種原因,僅僅重新安排我的XAML就會導致錯誤消失。

拿這個例子:

<StackPanel> 
    <TextBox Text="{Binding Tb1}"/> 
    <TextBox Text="{Binding Tb2}"/> 
    <TextBox Text="{Binding Tb3}" 
      FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
    <TextBox Text="{Binding Tb4}"/> 
</StackPanel> 

的TB1,TB2和TB3一切工作的綁定。 Tb4綁定已損壞。如果我換的最後兩行,像這樣:

<StackPanel> 
    <TextBox Text="{Binding Tb1}"/> 
    <TextBox Text="{Binding Tb2}"/> 
    <TextBox Text="{Binding Tb4}"/> 
    <TextBox Text="{Binding Tb3}" 
      FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
</StackPanel> 

那麼所有的綁定工作得很好。

由於某些原因,在XAML中設置聚焦的元素會導致在它之後發生的所有綁定中斷。

有沒有其他人看過?如果是這樣,你知道爲什麼發生這種情況嗎?

+0

在調試過程中,綁定是否在輸出窗格中產生錯誤,還是隻是不起作用? – goobering

+0

沒有。在整個過程中,我想確保我沒有任何綁定錯誤。我一直在使用跟蹤偵聽器,以防萬一我錯過了輸出中的某些東西。沒有錯誤顯示過。綁定只是不起作用。 – NielW

+0

當你說'所有綁定在它後面'時,你指的是StackPanel中的所有綁定,或者*所有綁定*,包括那些與StackPanel不同的綁定? – goobering

回答

0

我想用FocusManager.FocusedElement正確的做法是在視覺樹高設置元素的附加屬性:

<StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}"> 
    <Button Name="firstButton" /> 
</StackPanel> 

也許設定元素本身的附加屬性沒有得到很好的支持。

相關問題