0

私はmvvm-lightツールキットを使い始めましたが、WPFは初めてです。

私の質問は、メインウィンドウに2列のグリッドが含まれているアプリケーションを作成したいです。1colコマンドとcol2は、各コマンドが押されたときにビューを表示します。コマンドでビューを作成し、それ自体のビューからまとめて表示したい。

私はそれを行う方法を理解しようとしましたが、成功しませんでした。

mvvmライトを使用してこの種のfunconalityを作成する方法がわかりません。

メインビューとロード時にすでに作成されている別のビューを使用してメインウィンドウを作成する方法を知っています。

私を助けてください..

2008WPF3.5を使用しています

シャーリー。今日は私を幸せにしてください..私はちょうど週を始めました!!!

ありがとう。私はそれを実行し、結果として、実際のビューではなく、現在のViewModel "LU.ViewModel.AllChannelsViewModel"のTostring()を取得しました。

ロードしたいビューは次のとおりです:私は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>

ここで何が恋しいですか?ビューモデルの名前ではなく、必要な実際のビューを表示するにはどうすればよいですか?

シャーリー

4

2 に答える 2

2

MVVM Light でそれを行うための具体的な方法があるかどうかはわかりませんが、MVVM でビューを作成する一般的な方法ContentControlは、ViewModel のプロパティにバインドされた を作成することです。そのプロパティに新しい ViewModel を適用すると、ViewModel の type に一致するContentControlを使用してレンダリングされます。DataTemplate

<!-- 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}" />
于 2010-06-13T12:22:11.203 に答える
0

MVVM Lightツールキットに含まれていないオプションを提供してくださったことをお許しください。しかし、私はすでにあなたが進んでいる道を進んでおり、まさにこの理由でPrismを使用することを選択しました。Prismやイベントアグリゲーターの詳細に立ち入る時間はありませんが、そのツールでは次のようになります。

  1. ビューモデルで、ボタンまたはイベントをバインドするICommandを作成します
  2. 実行されたコマンドは、メソッドpublishを使用してイベントアグリゲーターを呼び出します。これは、VMの外部ですでに設定されており、呼び出されるのを待っているイベントです。呼び出されると、イベントにフォームが表示されます。プロパティや他のVMをイベントに渡すこともできます。これにより、VMはビューについて認識できなくなります。

最後に、MVVMは私にとって素晴らしいものでしたが、このような多くの課題を提供します。1日でそれを征服したり、アプリケーションをすばやく作成したりすることを期待しないでください。ただし、すべてを順番に取得することは、優れたパラダイムです。

于 2011-12-01T17:23:50.067 に答える