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

时间:2016-06-28 15:36:07

标签: c# silverlight mvvm telerik

我有一个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`

1 个答案:

答案 0 :(得分:1)

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

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

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

然后在您的对象模型而非 viewmodel

private bool _checkBoxIsChecked;

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