1

在 WPF 中,我想知道如何将后面的代码转换为附加行为,因为这遵循 MVVM 模式并且更易于维护和测试。

我有以下实现对接管理器的 xAML:

<dxb:BarManager x:Name="MyBarManager"/>

在后面的代码中,我可以将布局保存到 XML 文件中:

MyBarManager.SaveLayoutToStream(...);

我还可以从 XML 文件加载布局:

MyBarManager.LoadLayoutFromStream(...);

为了遵循 MVVM 模式,我想将其转换为附加属性,因此我可以绑定到TestViewModel 中的字符串,而不是后面的代码:

<!-- BarManager is part of the framework, it has methods to save/load layout. -->
<dxb:BarManager x:Name="MyBarManager"
     attached:BarLayoutManagerAttachedProperty.DockLayoutSerialize="{Binding Test}">

到目前为止我尝试过的

我使用 ReSharper 模板“dependencyProperty”创建了以下附加属性,但是,似乎没有办法连接任何调用:

public class BarLayoutManagerAttachedProperty : DependencyObject
{
    public static readonly DependencyProperty DockLayoutSerializeProperty = DependencyProperty.RegisterAttached(
        "DockLayoutSerialize",
        typeof (BarManager),
        typeof (BarLayoutManagerAttachedProperty),
        new PropertyMetadata(default(BarManager)));

    public static void SetDockLayoutSerialize(DependencyObject element, BarManager value)
    {
        element.SetValue(DockLayoutSerializeProperty, value);
    }

    public static BarManager GetDockLayoutSerialize(DependencyObject element)
    {
        return (BarManager) element.GetValue(DockLayoutSerializeProperty);
    }
}
4

0 回答 0