【发布时间】:2016-01-01 12:28:43
【问题描述】:
我从 Binding 派生了一个名为“ConfExtension”的类。简而言之,它看起来像这样:
Public Class ConfExtension
Inherits Binding
Public Sub New(path As String)
MyBase.New(path)
...
End Sub
...
Public Property DefaultValue As Object
End Class
在 XAML 中,我按如下方式使用此类:
<Window x:Class="MainWindow"
...
Height="{local:Conf Height,DefaultValue=480}"/>
如何从我的类中的方法访问绑定的目标对象(在本例中为窗口)?
编辑:根据我的研究,这似乎有点棘手和不可能。所以这就是我最终想要实现的目标:
ConfExtension 应该是一种存储和检索 WPF 控件设置的简单方法。 Binding 路径是存储键,目前运行良好:
<Window x:Class="MainWindow"
...
Height="{imCC:Conf Height,DefaultValue=480}"
Width="{imCC:Conf Width,DefaultValue=640}"
Left="{imCC:Conf Left, DefaultValue=0}"
Top="{imCC:Conf Top, DefaultValue=0}"
WindowState="{imCC:Conf WindowState,DefaultValue=Normal}"
>
...
</Window>
这让我通过将所有值保存为字符串来存储和检索 Window 配置。但是在可视化树的更下方,我可能想为其他一些配置属性绑定重用相同的键(实际上我什至不知道使用了哪些键)。这就是为什么我想出在目标元素上创建一些附加属性的想法,这将帮助我识别(并最终组合在一起)相应元素的设置。
<Window x:Class="MainWindow"
...
imCC:Conf.ID="A6236826-9B21-4EFB-BFA4-66C1661E22D7"
imCC:Conf.Section="Fenstereinstellungen"
Height="{imCC:Conf Height,DefaultValue=480}"
Width="{imCC:Conf Width,DefaultValue=640}"
Left="{imCC:Conf Left, DefaultValue=0}"
Top="{imCC:Conf Top, DefaultValue=0}"
WindowState="{imCC:Conf WindowState,DefaultValue=Normal}"
>
...
</Window>
(具有附加属性的类称为 Conf,而使用绑定的类称为 ConfExtension,两者都在命名空间“imCC”中,因此标记“imCC:Conf”中的符号相同)
我的想法是从获取我的“配置”绑定的元素在可视树中向上移动,获取下一个“Conf.ID”并将其用作前缀(或以类似方式)以识别相应的设置.
如果我无法单独通过这种方法获得Target,还有其他方法可以实现吗?我偶然发现了 BindingGroupName - 这是要遵循的面包屑吗?
【问题讨论】:
标签: .net wpf vb.net data-binding