如果 WPF MVVM 应该没有代码背后,为什么在使用 ICommand 时,是否需要在 Window.xaml.cs 代码中实例化 DataContext 属性?我已经并排观看并关注了 YouTube WPF MVVM、数据绑定、ICommand、INotifyPropertyChanged 视频,我很困惑。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel.VM_CalcRblAmt();
}
}
如何在 Window.Resource 标签中使用带有数据绑定的视图模型、模型、命令类?如果那是正确的 mvvm 模式?Window.Resource 标记中的以下内容(但不起作用)?我问这个是因为在不同作者的 WPF MVVM 教程上并排看,我看不到如何将视图模型、模型和命令类插入 UI 中的 xml 命名空间(在本例中为窗口)。例如下面:
<Window...
xmlns:nsviewmodel="clr-namespace:Wpf_MVVVM_Rbr.ViewModel" />
<Window.Resources>
<nsrbrvm:RbrCoreViewModel x:Key="objRbrTemp"
<Button x:Name="btnRebalancer"
Command="{Binding CalcRbrAmtCommand}"
Content="Rebalance"/>
<TextBox x:Name="txtAmtDaily" Text="{Binding model_Rblr_Temp.AmtDaily, UpdateSourceTrigger=PropertyChanged}" />
</Window.Resources>
同样,上面的代码目前实际上不在 Window.Resources 标记之间。它位于 Window.Resources 标记之外的 UI XAML 代码中。目前确实有效。但是 MVVM 模式是否不需要在 Window.Resources 或 Page.Resources 标签中引用 xmlns 命名空间并为其赋予 x:Key="someKeyName" 并在 Resources 标签内使用数据绑定?
因此,如果这是正确的 MVVM 实践,我如何使用数据绑定将 Window.Resources 数据绑定、视图模型、命令和模型类放在一起?
提前致谢!真诚的,我