2015-06-05 12 views
5

Tôi đã dành vài ngày qua để theo dõi lỗi này. Các ràng buộc của tôi bị tách ra, và tôi không biết tại sao. Tôi muốn một trong các hộp văn bản của tôi tập trung khi ứng dụng của tôi bắt đầu. Vì vậy, tôi đã sử dụng thuộc tính đính kèm để đặt phần tử được tập trung. Một số ràng buộc dữ liệu của tôi đã ngừng hoạt động.Các ràng buộc dữ liệu WPF bị hỏng bởi FocusManager - TẠI SAO?

Vì một lý do nào đó, chỉ cần sắp xếp lại XAML của tôi đã khiến lỗi này biến mất.

Hãy ví dụ này:

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

Các bindings cho TB1, TB2 và TB3 tất cả công việc. Ràng buộc Tb4 bị hỏng. Nếu tôi trao đổi hai dòng cuối cùng, như thế này:

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

sau đó tất cả các ràng buộc chỉ làm việc tốt.

Vì một lý do nào đó, đặt phần tử được tập trung trong XAML làm cho tất cả các liên kết đến sau khi ngắt.

Có ai khác nhìn thấy điều này không? Nếu vậy, bạn có biết tại sao điều này xảy ra không?

+0

Liệu ràng buộc có tạo ra lỗi trong ngăn đầu ra trong khi gỡ lỗi hay không hoạt động? – goobering

+0

Không. Trong toàn bộ quá trình này, tôi muốn đảm bảo rằng tôi không có bất kỳ lỗi ràng buộc nào. Tôi đã sử dụng một người nghe dấu vết trong trường hợp tôi bỏ lỡ một cái gì đó trong đầu ra. Không có lỗi nào được hiển thị. Việc ràng buộc chỉ không hoạt động. – NielW

+0

Khi bạn nói 'tất cả các ràng buộc đi sau nó', bạn có nghĩa là tất cả các ràng buộc trong StackPanel, hoặc * tất cả các ràng buộc * bao gồm cả những ràng buộc với StackPanel? – goobering

Trả lời

0

Tôi nghĩ rằng cách chính xác để sử dụng FocusManager.FocusedElement là để thiết lập thuộc tính trên một yếu tố gắn liền cao hơn trong cây thị giác:

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

Có lẽ thiết lập thuộc tính về các yếu tố tự gắn được cũng không được hỗ trợ.

Các vấn đề liên quan