我试图将用户控件的数据上下文绑定到窗口的数据上下文。但不知何故,在用户控件的代码中,数据上下文为空。我在这里做错了什么?
<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>
答案 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,则只需完全删除绑定。