3

MVVMlight フレームワークを使用する winRT でプログラムを作成しようとしています。アプリケーションには、一定のままにする必要がある部分と、そのコンテンツを特定のビューモデルにリンクする必要がある部分があります。私が言おうとしていることの小さな例を以下に示します。

ここに画像の説明を入力

したがって、灰色のボタンを押すとコンテンツは灰色になり、赤いボタンを押すとコンテンツは赤色になりますが、ページの残りの部分は一定のままです。

私が今考えることができる唯一の方法は、複数のデータテンプレートをビューに配置し、必要なときにのみそれらがバインドされているリストに入力して、入力すると表示され、クリアすると消えるようにすることですが、これによりビューが少し混乱していて、これを行う他の方法がないかどうか知りたいですか?

私が本当に達成したいのは、コンテンツエリアに読み込まれる対応するビューモデルを持つビューがあるボタン(グレーまたは赤)をクリックしたときです。

このチュートリアルで見つけたようなものでなければなりませんが、WinRt の場合、このチュートリアルを WinRt で動作させることができません。

http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views

4

1 に答える 1

2

ビュー モデルの usercontrol プロパティにバインドするコンテンツ コントロールを含む wpf ウィンドウのようなものを試してください。

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    x:Class="MainWindow"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
    DataContext="{Binding Main_VM, Source={StaticResource Locator}}"
    Background="#FF1D1D1D"
    WindowState="Maximized" 
    WindowStyle="None"   
    WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip"
    MinHeight="750" MinWidth="1050">

        <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinHeight="700" MinWidth="1000">
            <Grid.RowDefinitions>
                <RowDefinition Height="auto"/>

            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto"/>

            </Grid.ColumnDefinitions>

        <ContentControl Name="UC_Main" Content="{Binding UC_Main}"  Grid.Column="1" Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <!--workspace user control goes here-->
        </ContentControl>
    </Grid>

</Window>

ユーザーコントロールプロパティの値を変更するいくつかのボタン、またはリストビューなどを使用できます。以下は、ビューのビューモデルです。

    Public Class MainWindowViewModel
        Inherits ViewModelBase

#Region "DECLARATIONS"
        Public Const CC_Main As String = "UC_Main"
        Private _ucMain As UserControl = Nothing
#End Region

#Region "PROPERTIES"
        Public Property UC_Main() As UserControl
            Get
                Return _ucMain
            End Get

            Set(value As UserControl)
                If _ucMain Is value Then
                    Return
                End If
                RaisePropertyChanging(CC_Main)
                _ucMain = value
                RaisePropertyChanged(CC_Main)
            End Set
        End Property

#End Region

#Region "COMMANDS"
#End Region

#Region "CONSTRUCTOR"
        Public Sub New()
            UC_Main = New YourUserControl
        End Sub
#End Region

#Region "METHODS"
#End Region

    End Class

明らかに、これらは両方とも単純化されていますが、可能なことを示しているはずです。YourUserCONtrol は、メイン ウィンドウのコンテンツ コントロールに表示するビューです。次に、ボタンまたはイベントで mvvm-light Relay コマンドを使用して、ユーザーコントロールを新しいものに変更/設定できます。ページには、必要な数のコンテンツ コントロールを配置できます。

于 2013-03-14T15:31:04.820 に答える