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

时间:2015-12-07 17:08:23

标签: c# wpf data-binding binding

我有控制库和WPF应用程序。我需要创建我的自定义控件来vizualize图形。所以我创建了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,则所有更改都在窗口中处理,而不是控制。

1 个答案:

答案 0 :(得分:1)

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

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