【发布时间】:2015-05-11 20:48:21
【问题描述】:
使用 MVVM,我有一个实现命令的 ViewModel。我想接收剪贴板内容作为参数并用它做事。
XAML:
<Button Command="{Binding Path=ClipBoardAction}"
CommandParameter="{Binding SomeAwesomeCodeHereToPassCurrentClipboard}" />
c#:
private void ClipBoardAction(object parameter) {
//parameter is clipboard OR CLIPBOARD DATA like string[]
}
这可能吗?如果是这样,我应该在 XAML 中绑定什么?
编辑:目前的解决方法是将按钮连接到 Click 事件并在粘合后放入一些代码。
private void Button_Click(object sender, RoutedEventArgs e) {
//manually send command to object
string[] clipboard = Clipboard.GetText().Split(new Char[] { '\n' });
var but = sender as Button;
var viewModel = (FooViewModel)but.DataContext;
if (viewModel.ClipBoardAction.CanExecute(null)){
viewModel.ClipBoardAction.Execute(clipboard);
}
}
【问题讨论】:
-
Clipboard是System.Windows命名空间 (PresentationCore) 中的静态类。如果你包含这个引用,你可以在命令中使用Clipboard.WhateverFunction,不需要传递参数给它。 msdn.microsoft.com/en-us/library/… -
您能说得更具体些吗?我在系统中找不到剪贴板,可能是我创建的资源不正确。
-
System.Windows.Clipboard.GetText()你不必通过参数传递它,你可以在你的ClipboardAction中调用它 -
@markokstate 您在代码隐藏中引用它,在您的情况下是 ClipboardAction 命令。请参阅我提供的链接。
-
我想我的目标是用 ViewModel 处理它并避免后面的代码。
标签: c# wpf xaml binding clipboard