2012-03-11 27 views
7

iv'e có 2 tấm trong một trò chơi ứng dụngRàng buộc để một tài sản của DataContext kiểm soát khác

họ đều bị ràng buộc vào các yếu tố khác nhau.

GameDetailsPanel.DataContext = game ; 

    GameBoardPanel.DataContext = gameBoard ; 

* Game có một tài sản Bật *.

public Class Game 
    { 
     public bool Turn{ get; set;}    
    } 

bây giờ tôi cần phải ràng buộc một trong GameBoardPanel với giá trị của Turn tài sản,

* ví dụ: một cái gì đó dọc theo dòng của *

<Button Fill={Binding Source=GameDetailsPanel.DataContext , Path=Turn } ></Button> 

làm thế nào tôi có thể tham khảo GameDetailsPanel.DataContext trong ràng buộc của tôi?

Trả lời

4

Tôi khuyên bạn nên có các thuộc tính trò chơi và gameBoard của mình trên mô hình xem trình bao bọc và sau đó đặt datacontext của chế độ xem của bạn thành mô hình chế độ xem trình bao bọc. Bằng cách đó trong Fill của nút bấm của bạn ràng buộc bạn chỉ có thể tham khảo các chiếm đoạt tài sản trên mô hình quan điểm của bạn:

public Class Wrapper_ViewModel 
{ 
    public Game game{ get; set; } 
    public T gameBoard{ get; set; }   
} 

<Button Fill={Binding Path=game.Turn} ></Button> 

Tuy nhiên, để biết thêm một lần tình huống bạn có thể sử dụng các nguồn liên quan ràng buộc thuộc tính và móc khác bối cảnh các yếu tố dữ liệu, như trong ví dụ này: Access parent DataContext from DataTemplate

+0

yeah tôi nghĩ rằng tôi chỉ nghĩ rằng có lẽ tôi có thể làm việc xung quanh này bởi vì tôi chỉ cần nó cho địa điểm cụ thể này. –

+0

Kiểm tra chỉnh sửa của tôi ở trên cho một tùy chọn khác nếu bạn đang tìm kiếm một ràng buộc đơn giản. – KodeKreachor

12

Vì lợi ích của người tìm kiếm, bạn có thể liên kết với văn bản dữ liệu của điều khiển khác như chi tiết here.

Các giải pháp nhanh chóng trong trường hợp của tôi trông giống như:

<TextBlock Text="{Binding ElementName=ucClientDetails, 
          Path=DataContext.FullName}"></TextBlock> 

nơi 'ucClientDetails' là một điều khiển người dùng ràng buộc với một viewmodel chứa thông tin chi tiết khách hàng (bao gồm cả FullName).

1

sử dụng đơn giản

<Button Fill="{Binding ElementName=GameDetailsPanel,Path=DataContext.Turn}"></Button> 

yếu tố này ràng buộc.

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