1

私のプロジェクトには と がTitleViewありGameViewます。プログラムを起動すると、TitleViewが表示されます。ユーザーがボタンをクリックするとGameView表示されます。MainViewModel目的のビューに切り替えるコマンドを含む MVVM Light を使用しています。

からMainViewModel.cs

GameViewCommand = new RelayCommand(() => ExecuteGameViewCommand());

private void ExecuteGameViewCommand()
{
    CurrentViewModel = MainViewModel._gameViewModel;
}

TitleView.xaml で、このコマンドにアクセスする必要がありますが、その方法がわかりません。XAMLに関しては、私は非常に初心者です。

からTitleView.xaml

<UserControl x:Class="AoW.Views.TitleView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:vm="clr-namespace:AoW.ViewModels"
         mc:Ignorable="d" 
         d:DesignWidth="1020"
         d:DesignHeight="740" 
         Width="1020"
         Height="740">

    <Button Content="New Game"
            //This needs to bind to GameViewCommand in MainViewModel.cs
            Command="{Binding GameViewCommand}"
            Grid.Column="1"
            Grid.Row="1"
            HorizontalAlignment="Center"
            VerticalAlignment="Center" />

次の行を入れるとTitleView.xaml...

DataContext="{Binding Main, Source={StaticResource Locator}}"

... にアクセスできますGameViewCommandが、ローカル コマンドにアクセスできません。

ローカル コマンドの制御を維持しながら GameViewCommand にアクセスするにはどうすればよいですか?

追加のコードが役立つ場合は、お知らせください。

4

1 に答える 1

0

問題を修正しました。私がしなければならなかったのはこれだけでした:

<Button Content="New Game"
            Command="{Binding GameViewCommand}"
            DataContext="{Binding Main, Source={StaticResource Locator}}"
            Grid.Column="1"
            Grid.Row="1"
            HorizontalAlignment="Center"
            VerticalAlignment="Center" />

<Button Content="Say Hello"  
            Command="{Binding SayHelloCommand}"               
            Grid.Column="2"
            Grid.Row="2"
            HorizontalAlignment="Center"
            VerticalAlignment="Center" />

非常に簡単な修正であることがわかりました。

于 2013-06-03T01:21:52.467 に答える