Привязка между свойством зависимости пользовательского элемента управления и свойством родительской модели представления
У меня какой-то маленький вопрос. У меня есть 2 модели представления и 2 соответствующих представления. На первом представлении (пользовательский элемент управления) у меня есть флажок:
<UserControl x:Class="ZemaxWorks.UI.Views.DetectorViewer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:controls="clr-namespace:ZemaxWorks.UI.Controls"/> ... <StackPanel Grid.Column="1" Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal"> <CheckBox x:Name="Scales" Style="{StaticResource CheckBoxBase}" Content="{x:Static res:Resource.DETECTOR_VIEWER_EQUAL_SCALES}" IsChecked="{Binding ElementName=Scales, Path=EqualScales}" /> </StackPanel> </Grid>
Затем я создаю собственность dependensy и привязать его к "этот флажок установлен" флажок собственность:
public partial class DetectorViewer : UserControl { public bool EqualScales { get { return (bool)GetValue(EqualScalesProperty); } set { SetValue(EqualScalesProperty, value); } } // Using a DependencyProperty as the backing store for EqualScales. This enables animation, styling, binding, etc... public static readonly DependencyProperty EqualScalesProperty = DependencyProperty.Register(nameof(EqualScales), typeof(bool), typeof(DetectorViewer)); public DetectorViewer() { InitializeComponent(); } }
В главном окне у меня есть несколько вкладок,где нужно показать мой пользовательский элемент управления с флажком. Я описываю его по шаблону:
<views:ViewBase x:Class="ZemaxWorks.UI.Views.BeamSizeShowDataDialog" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"/> ... <views:DetectorViewer Grid.Row="1" DataContext="{Binding}" EqualScales="{Binding DataContext.IsAllEqualScales, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/> ... </views:ViewBase>
В модели представления для этого представления я создаю свойство:
public bool IsAllEqualScales { get { return allEqualScales; } set { SetProperty(ref allEqualScales, value); } }
Но привязка не работает. Мне нужно привязать свойство зависимости от пользовательского элемента управления к свойству модели представления BeamSizeShowDataDialog с режимом TwoWay. Как нужно правильно это делать ?? Извините за некоторые ошибки в моем сообщении. Спасибо всем.
Что я уже пробовал:
Я попытался изменить код:
&ЛТ;элемент управления UserControl Х:класс="ZemaxWorks.Пользовательского интерфейса.Вид.DetectorViewer "xmlns:x=" #unknown " >
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
описание:х="http://schemas.microsoft.com/winfx/2006/xaml"
описание:МС="http://schemas.openxmlformats.org/markup-compatibility/2006"
описание:д="http://schemas.microsoft.com/expression/blend/2008"
описание:контролирует="среды CLR-пространство имен:ZemaxWorks.Пользовательского интерфейса.Управления"/&ГТ;
...
&ЛТ;элемент StackPanel сетки.колонка="1" сетки.строка="1" поле HorizontalAlignment="правая" ориентация="горизонтальный"и GT;
&ЛТ;флажок х:имя="Весы" стиль="{расширение StaticResource CheckBoxBase}" содержание="{х:статические РЭС:ресурс.DETECTOR_VIEWER_EQUAL_SCALES} " >
Этот флажок установлен="{привязки RelativeSource={RelativeSource поиска, AncestorType={х:тип UserControl}}, путь=EqualScales}"
/>
но это тоже не работа.