У меня есть библиотека управления и приложение WPF. Мне нужно создать свой собственный элемент управления для визуализации графика. Так что я сделал GraphControl и установить там пользовательский атрибут GraphData:WPF-привязки в окне и пользовательском управлении
public static readonly DependencyProperty GraphDataProperty = DependencyProperty.Register("GraphData", typeof(Graph), typeof(GraphControl));
public Graph GraphData
{
get { return (Graph)GetValue(GraphDataProperty); }
set
{
SetValue(GraphDataProperty, value);
TextBlock.Text = "asdfasdfasdfasdfasd";
}
}
Эта часть делается, но теперь я хочу, чтобы связать GraphData собственности в MainWindow применения, где GraphControl вложен. Я имею в виду, что я хочу изменить какое-либо свойство graphData в MainWindow, и когда я это сделаю, рендеринги графа, а весь рендеринг происходит внутри элемента управления, а не окна. Пример:
<controls:GraphControl x:Name="GraphControl" GraphData="{Binding GraphData}"/>
Если я создаю новый DependencyProperty в окне, то все изменения обрабатываются в окне, а не контролировать.
+ нет оснований для создания DependencyProperty в классе MainWindow, вы должны просто реализовать INotifyPropertyChanged для привязки данных к вашему контролю. –
@VadimMartynov Вы видите, даже с вашим кодом, когда я определяю новый DependencyProperty в Window, он становится новым экземпляром и не влияет на UserControl. Я имею в виду, например, что я изменяю текст внутри элемента управления с помощью кода в setter в Control code-behind, я поставил точку останова. Когда появляется моя форма, я добираюсь до этого bp, но не тогда, когда я устанавливаю свойство в Window –
Чтобы добавить к ответу Льва, вам нужен Mode = TwoWay, чтобы заставить его работать. Но если вы собираетесь использовать одно и то же свойство дважды, то не создавайте его дважды, вместо этого используйте свойство attach. – adminSoftDK