Выбор ListView изменен пользовательский элемент управления - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь преобразовать следующий код для использования в шаблоне MVVM с Caliburn.Micro.

Без MVVM, когда я щелкаю элемент ListViewItem, создается новый UserControl и добавляется в качестве дочернего объекта в мою MainGrid.

Как я могу сделать то же самое, используя Caliburn.Micro?

<ListView x:Name="ListViewMenu" Foreground="#FFFF00" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListViewItem x:Name="ItemHome" Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="ViewDashboard" Height="25" Width="25" Margin="10"/>
<TextBlock Text="Home" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon x:Name="LoadEditIncidentPage" cal:Message.Attach="LoadEditIncidentPage" Kind="Pencil" Height="25" Width="25" Margin="10"/>
<TextBlock Text="Edit Incidents" VerticalAlignment="Center" Margin="20 10"/>
</StackPanel>
</ListViewItem>
<ListViewItem Height="60">
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Ticket" Height="25" Width="25" Margin="10"/>
<TextBlock Text="Tickets" VerticalAlignment="Center"  Margin="20 10"/>
</StackPanel>
</ListViewItem>
</ListView>

Код без MVVM:

     private void ListViewMenu_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        UserControl userControl = null;
        //          GridMain.Children.Clear();

        switch (((ListViewItem)((ListView)sender).SelectedItem).Name)
        {
            case "ItemHome":
                                    userControl = new Dashboard();
                                    GridMain.Children.Add(userControl);
                                    CardText.Text = "Test1";
                break;
            case "ItemCreate":
                                CardText.Text = "Test2";
                break;
            case "Completer":
                            CardText.Text = "Test2";
                        Clipboard.SetText(CardText.Text);
                break;
            default:
                break;
        }

    }
...