我刚刚开始学习使用WPF以及Caliburn.Micro(v3.2.0)和Mahapps(v2.0.0 a0105),并且在尝试获取Mahapps MetroTabItem以在ContentControl框中显示视图时遇到了问题。 ContentControl最初位于单独的网格中,但是据我所知,这应该很好。为了进行测试,我将其移至下面:(请注意,我同时将“ Name”设置为Name =和x:Name =,但这似乎没有什么不同。)
<!-- This is in AppView.xaml -->
<Grid.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
</Grid.Resources>
<TabControl Height="150"
Controls:TabControlHelper.Underlined="SelectedTabItem"
TabStripPlacement="Left" Grid.Column="0" Grid.Row="0">
<Controls:MetroTabItem Header="EndPoints" Name="MenuEndPoint">
<ContentControl x:Name="ActiveItem" />
</Controls:MetroTabItem>
尽管如此,这还是没有用。如果我仅用TextBlock替换ContentControl,那很好,因此,我认为选项卡设置不是问题,除非我没有正确的设置。实际的EndpointView.xaml并没有太多额外的内容,只是我在其中放了一个TextBlock,以便在加载时可以看到它。
我的AppViewModel包含:
public class AppViewModel : Conductor<object>
{
public void MenuEndPoint()
{
ActivateItem(new EndpointViewModel());
}
我的EndpointViewModel包含:
public class EndpointViewModel : Screen
{
}
我将使用myapp.Views的命名空间放入所有ViewModels中,然后才将myapp.ViewModels放入ViewModels中进行测试,以确保不是那样,但也没有变化。
我观看了Tim Corey的https://www.youtube.com/watch?v=laPFq3Fhs8k,并试图在GitHub上找到其他一些以类似方式使用它的项目,但是我发现使用它的方式并没有什么不同。有人有建议吗?
谢谢, -MH
答案 0 :(得分:1)
要使其生效,首先需要将一个事件附加到您的方法上。
由于您希望单击鼠标,所以相信您可以使用PreviewMouseDown
。
为此,您的MetroTabItem
必须看起来像这样:
<Controls:MetroTabItem Header="EndPoints" Name="MenuEndPoint" cal:Message.Attach="[Event PreviewMouseDown]=[Action MenuEndPoints]" >
然后将您的方法重命名为复数形式:
public void MenuEndPoints()
{
ActivateItem(new EndpointViewModel());
}