WPF // MahApps.Metro // Caliburn.Micro // Flyout // HeaderedContentControl

时间:2017-05-02 10:11:41

标签: wpf mvvm caliburn.micro mahapps.metro

自MahApps.Metro 1.5.0发生变化以来,Flyout的基本元素已从ContentControl更改为HeaderContentControl。现在使用Caliburn.Micro和this建议的MVVM方法不再适用。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

Content Control convention in CM source作为参考。

答案 1 :(得分:0)

我已添加了on GitHub附近发布的作品。

通过设置ItemTemplate的{​​{1}},似乎还有一些事情要发生。