WPF アプリケーションがあり、MVVM を実装しようとしています。メイン ウィンドウにはビューモデルとカスタム ユーザー コントロールがあります。このユーザー コントロールには、テキスト ボックスとボタンが含まれており、メインの親ウィンドウからデータ コンテキストを共有します。すべてが良いです...
テキストボックスをビューモデル内の変数にバインドでき、正常に動作します。しかし...私の人生では、ボタンからビューモデルにイベントハンドラーをバインドできません。次のエラーが表示され続けます。
Unable to cast object of type 'System.Reflection.RuntimeEventInfo' to type 'System.Reflection.MethodInfo'.
これは、MVVM を初めて使用するユーザーにとって一般的な問題であることを知っています。私はウェブを精査しましたが、何も機能していないようです。誰が私が間違っているのか説明できますか?
サンプル コードを次に示します。 メイン ウィンドウ:
<Window x:Class="Mvvm.View.MainWindowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:ZeeZor.Kiosk.Mvvm.View"
WindowStyle="None"
WindowState="Maximized" >
<Grid >
<view:ControlPanelView
Margin="5, 0, 5, 0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" >
</view:ControlPanelView>
</Grid>
</Window>
ユーザーコントロール:
<UserControl x:Class="Mvvm.View.ControlPanelView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" TextAlignment="Right" Text="{Binding Total}" Margin="0,5,20,5" />
<Button Grid.Row="1" Content="Test" Click="{Binding Path=OnClick}" Width="220" Height="100"/>
</Grid>
</UserControl>