2012-05-30 20 views
7

tengo un control y dentro de ese control que tengo un recurso con un tempalte datos:WPF usando MVVM: DataBinding con 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" 

He VM se establece en mi carpeta de modelo de vista, yo estoy poniendo en práctica MVVM. No puedo hacer funcionar mi encuadernación y no estoy seguro de por qué.

¿Puede alguien decirme si mi vinculación relativa es correcta, si realmente puede ver mi propiedad 'ImagePath' en mi clase MainViewModel?

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

Gracias.

+1

Aconsejo usando [Snoop] (http://snoopwpf.codeplex.com/) y [WPF permite rastrear información] (http://msdn.microsoft.com/en-us/library/dd409960. aspx). Ambos te muestran qué enlaces están fallando. También estoy aprendiendo WPF junto con MVVM y encuentro que estas dos fuentes de información son absolutamente invaluables. –

Respuesta

4

Ver modelo no es parte de su árbol Visual. por lo que el tipo buscar antecesor no funcionará allí. y si encuentra el padre raíz que está teniendo el contexto de datos, entonces puede usar su propiedad para enlazar con like.

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

Hola logré que funcione.

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

cambié AncestorTypeto be'Window' que era todo listo atado a mi MainViewModel y luego se usa 'DataContext.' en mi Camino para poder ver mi propiedad.

Espero que esto ayude a alguien más !!

+0

Muy útil, incluso años después ... funciona muy bien para el comando del sistema de navegación en una vista de contenedor, sin utilizar soluciones o kits de herramientas excesivamente desarrollados. – ZexDC