Как создать и показать представления по запросу команды? - PullRequest
0 голосов
/ 13 июня 2010

Я начал использовать инструментарий mvvm-light и впервые в WPF.

Мой вопрос: Я хочу создать приложение, в котором главное окно содержит сетку с 2 столбцами 1 команда col, а col2 будет отображать представления при нажатии каждой команды. я хочу, чтобы представления создавались по команде и извлекались из собственного представления.

Я пытался понять, как это сделать, но безуспешно.

Я не знаю, как написать такую ​​забавную информацию с помощью mvvm light.

Я просто знаю, как создать главное окно с mainview и другим видом, созданным уже при загрузке.

Пожалуйста, помогите мне ..

Я использую 2008 WPF3.5

Ширли. Сделай меня счастливой сегодня .. я только начал неделю !!!

ThankU. Я сделал это и получил в результате Tostring () текущей ViewModel "LU.ViewModel.AllChannelsViewModel", а не реальное представление.

Представление, которое я хочу загрузить: Я использую mvvm-light

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
        <RowDefinition Height="30" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Button Grid.Row="0" Height="22" HorizontalAlignment="Right" Margin="8,4,0,0" Name="closebutton" VerticalAlignment="Top" Width="100" Command="{Binding CloseCommand}">Close</Button>
    <Button Grid.Row="1" Height="22" HorizontalAlignment="Left" Margin="8,4,0,0" Name="button1" VerticalAlignment="Top" Width="100" Command="{Binding GetChannelsCommand}">Load Channels</Button>
    <Button Grid.Row="1" Height="22" HorizontalAlignment="Right" Margin="8,4,0,0" Name="button2" VerticalAlignment="Top" Width="100" Command="{Binding NewChannelCommand}">New Channel</Button>
    <dg:DataGrid   Grid.Row="2"  ItemsSource="{Binding AllChannelsData}" Margin="0,30,0,0" />


</Grid>

Что мне здесь не хватает? Как я могу показать реальное представление, которое я хочу, а не название модели представления?

Ширли

Ответы [ 2 ]

2 голосов
/ 13 июня 2010

Я не знаю, есть ли что-то конкретное, чтобы сделать это с MVVM Light, но общий способ создания представления в MVVM - это создание ContentControl, которое связано со свойством ViewModel.Когда вы воздействуете на новую ViewModel на это свойство, ContentControl отображает его, используя DataTemplate, который соответствует типу ViewModel:

<!-- In resources -->
<DataTemplate DataType="{x:Type vm:FooViewModel}">
    <v:FooView />
</DataTemplate>

<DataTemplate DataType="{x:Type vm:BarViewModel}">
    <v:BarView />
</DataTemplate>
...

<!-- In the main view -->

<ContentControl Content="{Binding Current}" />
0 голосов
/ 01 декабря 2011

Пожалуйста, прости меня за то, что я предоставил тебе опцию, которой нет в наборе инструментов MVVM Light, но я уже был в курсе того, что ты делаешь, и решил использовать Prism именно по этой причине.У меня нет времени вдаваться в подробности о Prism или агрегаторах событий, но в этом инструменте вы бы:

  1. В вашей модели представления создайте ICommand, к которому вы бы привязали свою кнопку или события
  2. Ваша выполненная команда вызовет агрегатор событий с методом publish.Это событие, которое вы уже настроили за пределами своей виртуальной машины и ожидаете вызова.При вызове событие показывает вашу форму.Вы даже можете передать свойства или даже другие виртуальные машины на событие.Это позволяет вашей виртуальной машине не знать о View.

Наконец, MVVM был для меня замечательным, но он предложит вам много проблем, таких как эта.Не ожидайте, что вы сможете одолеть его за один день или быстро создать приложения, но когда вы все приведете в порядок, это хорошая парадигма.

...