在 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 一起使用,您需要使用 CommandBinding
或 DataBinding
,具体取决于您在做什么。
在您的示例中,您将使用数据绑定。您想要绑定到名为 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"); }
}
我有一个 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 一起使用,您需要使用 CommandBinding
或 DataBinding
,具体取决于您在做什么。
在您的示例中,您将使用数据绑定。您想要绑定到名为 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"); }
}