WPF przy użyciu MVVM: DataBinding z RelativeSource


Mam kontrolkę i wewnątrz tej kontrolki mam zasób z danymi tempalt:
<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"

Mam maszynę wirtualną zainstalowaną w moim folderze ViewModel, wdrażam mvvm. Nie mogę sprawić, by moje wiązanie zadziałało i nie jestem pewien, dlaczego nie.
Czy ktoś może mi powiedzieć, czy moje względne powiązanie jest poprawne, czy rzeczywiście widzi moją właściwość „ImagePath” w mojej klasie MainViewModel?
public String ImagePath
{
get
{
return _imagePath;
}
set
{
if (_imagePath == value)
{
return;
}
_imagePath = value;
RaisePropertyChanged("ImagePath");
}
}

Podziękować.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Cześć, udało mi się zmusić to do pracy.
<DataTemplate DataType="{x:Type local:FlowModel}">
<Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ImagePath}"/>
</DataTemplate>

Zmieniłem moje AncestorTypeto na „okno”, które było całkowicie powiązane z moim MainViewModel, a następnie użyłem „DataContext”. w drodze, aby móc zobaczyć swoją nieruchomość.
Mam nadzieję, że to pomoże komuś innemu!
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

model widoku nie jest częścią twojego drzewa wizualnego. w związku z tym wyszukiwanie typu przodka nie będzie tam działać. a jeśli znajdziesz rodzica głównego, który ma kontekst danych, możesz użyć jego właściwości, aby powiązać się z podobnymi.
<Image Source={...... Path=DataContext.MyProperty}"/>

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się