在 WPF 中,我想知道如何将后面的代码转换为附加行为,因为这遵循 MVVM 模式并且更易于维护和测试。
我有以下实现对接管理器的 xAML:
<dxb:BarManager x:Name="MyBarManager"/>
在后面的代码中,我可以将布局保存到 XML 文件中:
MyBarManager.SaveLayoutToStream(...);
我还可以从 XML 文件加载布局:
MyBarManager.LoadLayoutFromStream(...);
为了遵循 MVVM 模式,我想将其转换为附加属性,因此我可以绑定到Test
ViewModel 中的字符串,而不是后面的代码:
<!-- 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);
}
}