窗口和用户控件中的WPF绑定

本文关键字:WPF 绑定 控件 用户 窗口 | 更新日期: 2023-09-27 18:26:03

我有控制库和WPF应用程序。我需要创建我的自定义控件来可视化图形。所以我制作了GraphControl,并在那里设置了自定义属性GraphData:

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绑定到GraphControl嵌套的应用程序的MainWindow中的属性。我的意思是,我想在MainWindow中更改一些graphData属性,当我这样做时,图形会重新呈现,所有渲染都发生在控件内,而不是窗口内。例如:

<controls:GraphControl x:Name="GraphControl" GraphData="{Binding GraphData}"/>

若我在Window中创建了新的DependencyProperty,那个么所有的更改都在窗口中处理,而不是控制。

窗口和用户控件中的WPF绑定

据我所知,您希望将控件的属性绑定到窗口上的属性,而不是DataContext上的属性。如果是这种情况,您可以使用RelativeSource属性来实现它,如下所示:

<controls:GraphControl x:Name="GraphControl" GraphData="{Binding Path=GraphData, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>