【问题标题】:WPF // MahApps.Metro // Caliburn.Micro // Flyout // HeaderedContentControlWPF // MahApps.Metro // Caliburn.Micro // Flyout // HeaderedContentControl
【发布时间】:2017-09-29 19:45:26
【问题描述】:

由于 MahApps.Metro 1.5.0 中的更改,Flyout 的基本元素已从 ContentControl 更改为 HeaderContentControl。现在,带有 Caliburn.Micro 和 this 建议的 MVVM 方法不再适用了。

有其他人尝试过以一种不错的 MVVM 方式解决这个问题吗?

【问题讨论】:

标签: wpf mvvm caliburn.micro mahapps.metro


【解决方案1】:

虽然我自己没有尝试过,但由于新的Flyout 控件现在基于HeaderedContentControl,尝试执行此操作而不是基于ContentControl 的前一个控件将是一个简单的逻辑选择.看起来这种变化的好处是消除了几个依赖属性......

<controls:FlyoutsControl.ItemTemplate>
  <DataTemplate>
    <HeaderedContentControl cal:View.Model="{Binding}" />
  </DataTemplate>
</controls:FlyoutsControl.ItemTemplate>

您创建一个 Caliburn.micro 约定以实际正确绑定到 HeaderedContentControl 可能与 ContentControl 变体没有什么不同是,默认情况下已经在 CM 中.奇怪的是,这个HeaderedContentControl 是从ContentControl 派生的,理论上它应该被正确找到。另一件要考虑的事情是,这实际上也可能与 Visual Tree 有关,CM 直到它在树中才能看到它,因此无法绑定它。

Content Control convention in CM source 作为参考。

【讨论】:

  • 它不适用于更改后的 ItemTemplate。标头设置为“找不到 System.String 的视图”。并且内容显示 ViewModel.ToString() 属性(但使用 Snoop 我可以看到 DataContext 设置正确)。
【解决方案2】:

我添加了一个关于on GitHub 的工作。

设置ItemTemplateFlyoutsControl 似乎发生了一些事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多