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

本文关键字:事件处理 程序 找不到 MVVM | 更新日期: 2023-09-27 17:52:57

我有一个silverlight应用程序。其中一个StackPanel将显示表格。第一列是一个复选框。

<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方法。但是我得到了错误

事件处理程序'Complete_Checked '在类.....上找不到

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

你不能使用点击事件处理程序与MVVM,你需要使用CommandBindingDataBinding取决于你在做什么。

在您的示例中,您将使用数据绑定。您需要绑定到名为IsChecked的复选框依赖属性。您还需要使用双向模式。这将允许UI在绑定属性发生变化时更新它。
<CheckBox IsChecked="{Binding CheckBoxIsChecked, Mode=TwoWay}">

然后在object model not viewmodel

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