Mah*_*hsa 19 c# wpf mvvm icommand
我试图传递CommandParameter给我的方法ViewModel.这该怎么做?
private void Open(object sender)
{
if (sender==this.objMainWindow.btnHistory)
{
objMainWindow.Container.Child = objHistory;
}
if (sender == this.objMainWindow.btnNew_Item)
{
objMainWindow.Container.Child = objNewItem;
}
if (sender == this.objMainWindow.btnSide_Effects)
{
objMainWindow.Container.Child = objSideEffect;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我ViewModel想要通过的meyhod CommandParameter.我CommandParameter用于按钮.
Mar*_*man 45
"ViewModel"意味着MVVM.如果您正在使用MVVM,则不应将视图传递到视图模型中.通常,您在XAML中执行以下操作:
<Button Content="Edit"
Command="{Binding EditCommand}"
CommandParameter="{Binding ViewModelItem}" >
Run Code Online (Sandbox Code Playgroud)
然后在你的视图模型中:
private ViewModelItemType _ViewModelItem;
public ViewModelItemType ViewModelItem
{
get
{
return this._ViewModelItem;
}
set
{
this._ViewModelItem = value;
RaisePropertyChanged(() => this.ViewModelItem);
}
}
public ICommand EditCommand { get { return new RelayCommand<ViewModelItemType>(OnEdit); } }
private void OnEdit(ViewModelItemType itemToEdit)
{
... do something here...
}
Run Code Online (Sandbox Code Playgroud)
显然,这只是为了说明这一点,如果您只有一个属性可以编辑,名为ViewModelItem,那么您不需要将其作为命令参数传递.
Joh*_*Zhu 11
仅使用数据绑定语法。例如,
<Button x:Name="btn"
Content="Click"
Command="{Binding ClickCmd}"
CommandParameter="{Binding ElementName=btn,Path=Content}" />
Run Code Online (Sandbox Code Playgroud)
我们不仅可以使用数据绑定从视图模型中获取一些数据,还可以将数据传回视图模型。在 CommandParameter 中,必须使用ElementName显式声明绑定源。
如果您特别将元素传递给viewmodel您可以使用
CommandParameter="{Binding ElementName=ManualParcelScanScreen}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87895 次 |
| 最近记录: |