Próbuję przywiązać obraz z okna do "monitora" UserControl wewnątrz "wskazówki użytkownika" UserControl. Wyświetlacz ma DependancyProperty "DisplayImage". To jest podobne do this, ale ich odpowiedzi nie pomogły w rozwiązaniu mojego problemu.Jak ujawnić zależność Kontrola kontroli zagnieżdżonej w UserControl?
DisplayHandler powinien również posiadać właściwość "DisplayImage" i przekazywać oprawę do wyświetlania. Ale program Visual Studio nie pozwala mi dwukrotnie zarejestrować usługi DependancyProperty o tej samej nazwie. Więc starałem się nie zarejestrować go dwa razy, ale tylko do jej ponownego wykorzystania:
okno
<my:DisplayHandler DisplayImage=
"{Binding ElementName=ImageList, Path=SelectedItem.Image}" />
DisplayHandler
XAML
<my:Display x:Name="display1"/>
cs
public static readonly DependencyProperty DisplayImageProperty =
myHWindowCtrl.DisplayImageProperty.AddOwner(typeof(DisplayHandler));
public HImage DisplayImage {
get { return (HImage)GetValue(DisplayImageProperty); }
set { SetValue(DisplayImageProperty, value); }
}
public HImage DisplayImage /*alternative*/ {
get { return (HImage)display1.GetValue(Display.DisplayImageProperty); }
set { display1.SetValue(Display.DisplayImageProperty, value); }
}
** żadna z 2 mieszkań wypracowane. *
Wyświetlacz
public HImage DisplayImage {
get { return (HImage)GetValue(DisplayImageProperty); }
set { SetValue(DisplayImageProperty, value); }
}
public static readonly DependencyProperty DisplayImageProperty =
DependencyProperty.Register("DisplayImage", typeof(HImage), typeof(Display));
myślałem Control idzie w górę Drzewa i patrzy na swoją własność, jeżeli jego własny Wartość nie jest zdefiniowana. ->reference
Więc powinien praca jakoś ...
Zrobiłem kilka prób z Templating i A ContentPresenter dlatego, że pracował dla ImageList (ImageList zawiera również wyświetlacz), ale nie mogę zmusić go do powiązać wartość jak dla obiektu ListBoxItem.
Dzięki! To działa dobrze. Ale właśnie się dowiedziałem, dodając: 'DisplayImage =" {Binding RelativeSource = {RelativeSource AncestorType = hview: DisplayHandler}, Path = DisplayImage} "/>' dodatkowo wspiera mnie z Twoway Binding. –
Miałem tylko nadzieję, że to był znak DP, więc funkcja ChangeNotification zadziała. W ten sposób wydaje się, że ponownie przechowuje wartość dwukrotnie. Czy się mylę? –
W rzeczywistości jest to ten sam DP, ale przechowuje wartość dwukrotnie. Najpierw przechowuje wartość w DisplayHandler, a następnie (w PropertyCangedCallback) we wbudowanej instancji Display. Ale w czym problem? To po prostu przechowywanie odniesienia do obiektu. A może HImage to duża struktura? – Clemens