我想将用户控件属性设置为父控件中属性的值。例如,假设我的主窗口控件有一些初始配置数据。目前我在XAML中使用以下内容:
<Window x:Class="MyProject.MainWindow"
x:Name="TopWindow" ... >
...
<local:MyUserControl Config="{Binding ElementName=TopWindow,
Path=MyUserControlConfig, Mode=OneTime}" />
</Window>
但这似乎需要两个依赖属性,一个在MainWindow(MyUserControlConfig)中:
namespace MyProject
{
public partial class MainWindow: Window
{
public static readonly DependencyProperty MyUserControlConfigProperty=
DependencyProperty.Register("MyUserControlConfig",
typeof(UserControlConfig), typeof(MainWindow));
public UserControlConfig MyUserControlConfig
{
get { return (UserControlConfig)
GetValue(MyUserControlConfigProperty); }
set { SetValue(MyUserControlConfigProperty, value); }
}
}
}
和MyUserControl(Config)中的一个:
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); }
}
}
}
我真的不需要观察任何更改,只是在创建时将数据传递给我的用户控件。这可能是为两个中的至少一个使用简单属性,还是必须使用两个依赖属性来执行此(一次)初始化?
更新:Jay的解决方案在MainWindow类中只留下了一个CLR属性:
namespace MyProject
{
public partial class MainWindow: Window
{
public UserControlConfig MyUserControlConfig {get; private set;}
...
}
}
现在,如果可以从MyUserControl类中删除依赖项属性并将其替换为仍然通过XAML绑定(或其他一些XAML机制初始化)的简单属性,那么我可以通过XAML传入数据源
答案 0 :(得分:1)
我可能会弄错,但如果您可以绑定到其他类的CLR属性,我希望您可以绑定到MainWindow
类的CLR属性。
你试过吗?