2012-05-30 9 views
7

Tôi có một điều khiển và trong vòng kiểm soát rằng tôi có một tài nguyên với một tempalte dữ liệu:WPF sử dụng MVVM: DataBinding với RelativeSource

<DataTemplate DataType="{x:Type local:FlowModel}"> 
    <Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type vm:MainViewModel}}, Path=MainViewModel.ImagePath}"/> 
    </DataTemplate> 

xmlns:vm="clr-namespace:CortexMonitoringTool.ViewModel" 

Tôi đã VM thiết lập để thư mục ViewModel của tôi, tôi đang thực hiện MVVM. Tôi không thể có được sự ràng buộc của tôi để làm việc và tôi không chắc chắn tại sao không.

Một số có thể cho tôi biết liệu ràng buộc tương đối của tôi có chính xác không, nếu nó thực sự có thể thấy thuộc tính 'ImagePath' của tôi trong lớp MainViewModel của tôi?

public String ImagePath 
    { 
     get 
     { 
      return _imagePath; 
     } 
     set 
     { 
      if (_imagePath == value) 
      { 
       return; 
      } 
      _imagePath = value; 
      RaisePropertyChanged("ImagePath"); 
     } 
    } 

Cảm ơn bạn.

+1

Tôi khuyên bạn nên sử dụng [Snoop] (http://snoopwpf.codeplex.com/) và [bật thông tin theo dõi WPF] (http://msdn.microsoft.com/en-us/library/dd409960. aspx). Cả hai đều cho bạn thấy những ràng buộc nào đang thất bại. Tôi cũng học WPF cùng với MVVM và tôi đang tìm hai nguồn thông tin này hoàn toàn vô giá. –

Trả lời

4

bạn Xem mô hình không phải là một phần của cây Visual của bạn. do đó, loại tổ tiên tìm thấy sẽ không hoạt động ở đó. và nếu bạn tìm thấy cha mẹ gốc đang có datacontext thì bạn có thể sử dụng thuộc tính của nó để liên kết với nhau.

<Image Source={...... Path=DataContext.MyProperty}"/> 
7

Xin chào, tôi đã cố gắng làm cho nó hoạt động.

<DataTemplate DataType="{x:Type local:FlowModel}"> 
    <Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ImagePath}"/> 
    </DataTemplate> 

tôi đã thay đổi AncestorTypeto be'Window tôi' mà là tất cả sẵn sàng liên kết với MainViewModel tôi và sau đó sử dụng 'DataContext'. trong Con đường của tôi để có thể nhìn thấy tài sản của tôi.

Hy vọng điều này sẽ giúp người khác !!

+0

Rất hữu ích thậm chí nhiều năm sau ... hoạt động độc đáo cho lệnh hệ thống điều hướng trên hộp nhìn Chế độ xem, mà không sử dụng các giải pháp hoặc bộ công cụ quá tải. – ZexDC