Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 将用户控件属性绑定到命名的父属性_Wpf_Wpf Controls_Binding_Wpf 4.0 - Fatal编程技术网

Wpf 将用户控件属性绑定到命名的父属性

Wpf 将用户控件属性绑定到命名的父属性,wpf,wpf-controls,binding,wpf-4.0,Wpf,Wpf Controls,Binding,Wpf 4.0,我想将用户控件属性设置为父控件中属性的值。例如,假设我的主窗口控件有一些初始配置数据。目前,我在XAML中使用以下内容: <Window x:Class="MyProject.MainWindow" x:Name="TopWindow" ... > ... <local:MyUserControl Config="{Binding ElementName=TopWindow, Path=My

我想将用户控件属性设置为父控件中属性的值。例如,假设我的主窗口控件有一些初始配置数据。目前,我在XAML中使用以下内容:

<Window x:Class="MyProject.MainWindow"
        x:Name="TopWindow" ... >
  ...
  <local:MyUserControl Config="{Binding ElementName=TopWindow,
                                Path=MyUserControlConfig, Mode=OneTime}" />
</Window>
和MyUserControl(配置)中的一个:

我真的不需要观察任何更改,只是在创建时将数据传递到我的用户控件中。这是否可以对这两个属性中的至少一个使用简单属性,或者我必须使用两个依赖属性来执行(一次)初始化

更新:Jay的解决方案只在MainWindow类中留下一个CLR属性:

namespace MyProject
{
  public partial class MainWindow: Window
  {
    public UserControlConfig MyUserControlConfig {get; private set;}
    ...
  }
}

现在,如果可以从MyUserControl类中删除dependency属性,并将其替换为仍然通过XAML绑定初始化的简单属性(或其他一些XAML机制,以便我可以通过XAML传入数据源)。

我可能会错,但如果可以绑定到其他类上的CLR属性,我希望您可以绑定到
主窗口
类上的CLR属性


您试过了吗?

我可能弄错了,但是如果您可以绑定到其他类上的CLR属性,我希望您可以绑定到您的
主窗口
类上的CLR属性


您试过了吗?

UserControl中的MyUserControlConfig属性不需要是依赖项属性,普通CLR属性就可以了。仅当您希望将依赖项属性绑定到其他对象时,才需要依赖项属性,因此配置必须是DP@Meleak我认为这是落后的
ConfigProperty
应该是DP,MyUserControlConfigProperty不必是,因为前者将绑定到后者。@Jay:的确是:)我再次查看了这个问题并更新了我的评论Jay的回答给我们留下了一个依赖属性(在MyUserControl中)和一个CLR属性(在MainWindow中)。还有比这更简单的吗?UserControl中的MyUserControlConfig属性不需要是依赖项属性,普通的CLR属性就可以了。仅当您希望将依赖项属性绑定到其他对象时,才需要依赖项属性,因此配置必须是DP@Meleak我认为这是落后的
ConfigProperty
应该是DP,MyUserControlConfigProperty不必是,因为前者将绑定到后者。@Jay:的确是:)我再次查看了这个问题并更新了我的评论Jay的回答给我们留下了一个依赖属性(在MyUserControl中)和一个CLR属性(在MainWindow中)。还有比这更简单的吗?我已经尝试在主窗口中使用一个公共的自动定义属性:UserControlConfig MyUserControlConfig{get;set;},它是在主窗口的构造函数中初始化的。但是,尽管代码编译没有错误,但MyUserControl中的Config属性没有设置为值(即,它保持为null)。只有当我在MainWindow中将UserControlConfig设置为依赖属性时,才通过绑定传递其值。也许我做错了什么?我只是再次尝试使MainWindow属性成为在MainWindow构造函数中初始化的常规自动生成的属性,它实际上可以工作。我上次试的时候一定把事情弄糟了。非常感谢你的帮助!我尝试在主窗口中使用一个公共的自动定义属性:UserControlConfig MyUserControlConfig{get;set;},它是在主窗口的构造函数中初始化的。但是,尽管代码编译没有错误,但MyUserControl中的Config属性没有设置为值(即,它保持为null)。只有当我在MainWindow中将UserControlConfig设置为依赖属性时,才通过绑定传递其值。也许我做错了什么?我只是再次尝试使MainWindow属性成为在MainWindow构造函数中初始化的常规自动生成的属性,它实际上可以工作。我上次试的时候一定把事情弄糟了。非常感谢你的帮助!
namespace MyProject
{
  public partial class MyUserControl: UserControl
  {
    public static readonly DependencyProperty ConfigProperty=
      DependencyProperty.Register("Config", 
      typeof(UserControlConfig), typeof(MainWindow));

    public UserControlConfig Config
    {
      get { return (UserControlConfig) GetValue(ConfigProperty); }
      set { SetValue(ConfigProperty, value); }
    }    
  }
}
namespace MyProject
{
  public partial class MainWindow: Window
  {
    public UserControlConfig MyUserControlConfig {get; private set;}
    ...
  }
}