在 MVVM 中找不到事件处理程序

Event handler can't be found in MVVM

我有一个 silverlight 应用程序。 StackPanel 之一将显示 table。第一列是一个复选框。

<telerik:RadGridView.Columns>
                <telerik:GridViewColumn Width="80" Header="Complete" HeaderTextAlignment="Center" TextAlignment="Center">
                    <telerik:GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox HorizontalAlignment="Center" IsChecked="{Binding Something, Converter={StaticResource ShortToBooleanConverter}}" Checked="Complete_Checked"></CheckBox>
                        </DataTemplate>
                    </telerik:GridViewColumn.CellTemplate>
                </telerik:GridViewColumn>

我想要的是,一旦我点击该框,就会弹出一个带有 Y/N 的消息框。我在 MVVM 中确实有一个 Complete_Checked 方法。但是我收到错误

Event handler 'Complete_Checked` not found on class.....

您不能将点击事件处理程序与 MVVM 一起使用,您需要使用 CommandBindingDataBinding,具体取决于您在做什么。

在您的示例中,您将使用数据绑定。您想要绑定到名为 IsChecked 的复选框依赖项 属性。您还需要使用 TwoWay 模式。这将允许 UI 在更改时更新绑定 属性。

<CheckBox IsChecked="{Binding CheckBoxIsChecked, Mode=TwoWay}">

那么在你的对象中 model 而不是 viewmodel

private bool _checkBoxIsChecked;

public bool CheckBoxIsChecked
{
   get{ return _checkBoxIsChecked;}
   set{_checkBoxIsChecked = value; OnPropertyChanged("CheckBoxIsChecked"); }
}