Использование Caliburn.Micro с Mahapps MetroTabItem не загружается Просмотр в ContentControl - PullRequest
0 голосов
/ 08 ноября 2018

Я только начал учиться использовать WPF, а также Caliburn.Micro (v3.2.0) и Mahapps (v2.0.0 a0105), и у меня возникла проблема с попыткой заставить Mahapps MetroTabItem отображать View в окне ContentControl , ContentControl изначально был в отдельной сетке, но, насколько я понимаю, это должно быть просто прекрасно. Чтобы проверить, я переместил его и поместил в следующее: (Обратите внимание, что я установил «Имя» как 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>

Это все равно не сработало. Если я заменил ContentControl только на TextBlock, он прекрасно работает, поэтому я не верю, что это проблема с настройкой вкладок, если только у меня просто нет этой настройки. В самом 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 только для проверки, чтобы убедиться, что это не так, но изменений тоже не было.

Я смотрел https://www.youtube.com/watch?v=laPFq3Fhs8k от Тима Кори, а также пытался найти другие проекты на GitHub, которые также использовали его аналогичным образом, но не могли найти ничего другого в том, как я пытался использовать Это. У кого-нибудь есть предложения?

Спасибо, -MH

1 Ответ

0 голосов
/ 13 ноября 2018

Чтобы это сработало, сначала нужно прикрепить событие к вашему методу.Так как вы хотите это по щелчку мыши, я думаю, вы можете использовать PreviewMouseDown.Для этого ваш MetroTabItem должен выглядеть следующим образом:

 <Controls:MetroTabItem Header="EndPoints" Name="MenuEndPoint" cal:Message.Attach="[Event PreviewMouseDown]=[Action MenuEndPoints]" >

и переименовать ваш метод во множественное число следующим образом:

public void MenuEndPoints()
    {
        ActivateItem(new EndpointViewModel());
    }
...