【发布时间】:2019-07-14 13:08:12
【问题描述】:
我有一个名为 MyControl 的控件类,它具有直接 bool 属性 AccessDirectProperty 和一个对象 MyControlSettings
public class MyControl : Control
{
public bool AccessDirectProperty
{
get; set;
}
public MyControlSettings ControlSettings
{
get;set;
}
}
请查找MyControlSettings类详细信息
public class MyControlSettings
{
public bool AccessIndirectProperty
{
get;set;
}
}
可以从 XAML 访问直接属性 AccessDirectProperty 而不会出现任何错误。
<Window>
<Grid>
<local:MyControl AccessDirectProperty="True"/>
</Grid>
</Window>
但我无法从 XAML 中的对象 ControlSettings 访问属性 AccessIndirectProperty。下面的代码无法做到这一点。
<Window>
<Grid>
<local:MyControl AccessDirectProperty="True" ControlSettings.AccessIndirectProperty=""/>
</Grid>
</Window>
谁能帮我解决这个问题?
【问题讨论】:
-
因为
ControlSettings.AccessIndirectProperty不是MyControl的属性/成员... -
旁注:如果您打算绑定
MyControl的某些属性——这些属性是绑定目标——你需要将这些属性设为DependencyProperties...跨度> -
是的,我需要在 XAML 中设置 AccessIndirectProperty。有没有办法使用 MyControl 的属性 ControlSettings 来实现它?
-
您能否提供一个使用 DependencyProperties 来实现上述要求的示例?
-
我不知道你想要达到什么目标,所以我不能告诉你应该做什么。但也许您可以将
ControlSettings.AccessIndirectProperty设为附加属性,通过该属性可以操作 MyControl 及其关联的 MyControlSettings 实例。或者您可以在 XAML 中创建一个完整的 MyControlSettings 实例并将其设置为<MyControl><ControlSettings><MyControlSettings SomeProperty="true"/></ControlSettings></MyControl>请注意,这会创建并分配一个新的 MyControlSettings 对象,它不会修改现有的 MyControlSettings 对象
标签: c# wpf xaml binding dependency-properties