将用户控件的数据上下文绑定到WPF中的主窗口

时间:2016-07-12 22:04:29

标签: wpf xaml data-binding user-controls datacontext

我试图将用户控件的数据上下文绑定到窗口的数据上下文。但不知何故,在用户控件的代码中,数据上下文为空。我在这里做错了什么?

<Window x:Class="MyApp.Dialogs.SettingsWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:dialogs="clr-namespace:MyApp.Dialogs"
        Title="Settings">

    <dialogs:Usercontrol DataContext="{Binding RelativeSource={RelativeSource Self}}"></dialogs:Usercontrol>

</Window>

3 个答案:

答案 0 :(得分:3)

{Binding RelativeSource = {RelativeSource Self},Path = DataContext}

但是,usercontrol应该自动继承窗口的datacontext!

答案 1 :(得分:2)

如果MyApp.Dialogs.Usercontrol在其XAML /代码隐藏中定义了自己的DataContext,并且您尝试覆盖它,那么您可以执行此操作:

<dialogs:Usercontrol DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext}" />

如果MyApp.Dialogs.Usercontrol没有明确定义DataContext,那么您根本不需要这样做 - 它会自动从其父级(Window)继承。

答案 2 :(得分:1)

如果您在一次检查的代码隐藏中看到DataContext为空,则绑定尚未解决。您没碰巧检查构造函数吗?

使用绑定,您获得的DataContext应为MyApp.Dialogs.Usercontrol类型。如果您希望它与Window具有相同的DataContext,则只需完全删除绑定。