我正在尝试将Master / Detail Sample从Microsoft转换为MVVM。 (样本:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlMasterDetail)
在Sample中,CurrentStateChanged事件绑定到函数背后的一些代码
MainPage.xaml中
<VisualStateGroup x:Name="AdaptiveStates" CurrentStateChanged="AdaptiveStates_CurrentStateChanged">
MainPage.xaml.cs中
private void AdaptiveStates_CurrentStateChanged(object sender, VisualStateChangedEventArgs e)
如何将其绑定到视图模型?
当我尝试将它绑定到像这样的属性时:
MainPage.xaml中
<VisualStateGroup x:Name="AdaptiveStates" CurrentStateChanged="{Binding AdaptiveStates_OnCurrentStateChanged}">
MainPageViewModel.cs
public ICommand AdaptiveStates_OnCurrentStateChanged
{
get { throw new NotImplementedException(); }
}
DataContext在代码隐藏文件中设置。
我得到以下编译错误:
\ Microsoft.Windows.UI.Xaml.Common.targets(263,5):Xaml内部错误错误WMC9999:对象引用未设置为对象的实例。
这并没有真正告诉我任何关于什么错误的信息。任何人都有任何想法为什么会出现这个错误或我如何实现我的目标?
答案 0 :(得分:0)
我用x:Bind找到了我的解决方案。
第一步:将ViewModel声明为代码中的属性
MainPage.xaml.cs中
public MainPageViewModel MainPageViewModel { get; set; }
第二步:将AdaptiveStates_OnCurrentStateChanged的方法返回类型更改为预期的VisualStateChangedEventHandler
MainPageViewModel.cs
public VisualStateChangedEventHandler AdaptiveStates_OnCurrentStateChanged
第三步:用x绑定函数:绑定
MainPage.xaml中
<VisualStateGroup x:Name="AdaptiveStates" CurrentStateChanged="{x:Bind MainPageViewModel.AdaptiveStatesOnCurrentStateChanged}">
我可能花了太多时间搞清楚这一点。我希望这至少会帮助那些遇到同样问题的人。