我想更改ViewModel
属性的值(它与DataContext
绑定)。 与经典事件极其容易,与命令它成为艰巨的任务。 这是我的代码:
public partial class MainWindow : Window { ViewModel _vm = new ViewModel(); public MainWindow() { InitializeComponent(); _vm.BtnClick = new BtnClick(); DataContext = _vm; } } public class BtnClick : ICommand { public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public bool CanExecute(object parameter) { return true; } public void Execute(object parameter) { Debug.WriteLine(parameter.ToString()); } } public class ViewModel { public ICommand BtnClick { get; set; } public string Input { get; set; } public string Output { get; set; } }
<StackPanel>
<TextBox Text="{Binding Input}"></TextBox>
<TextBlock Text="{Binding Output}"></TextBlock>
<Button Command="{Binding Path=BtnClick}" CommandParameter="{Binding Input}">Translate</Button>
</StackPanel>
命令正确地从textbox
中获取值,现在我想用这个值做一些事情,并将它保存到outputer
中。 问题是从命令角度来看,我无法同时访问DataContext
和ViewModel
。
任何命令的实现通常都在ViewModel中。
通常使用框架或助手类。
例如:
https://riptutorial.com/mvvm-light/example/32335/relayCommand
公共类MyViewModel{。。。。。。
public ICommand MyCommand => new RelayCommand(
() =>
{
//execute action
Message = "clicked Button";
},
() =>
{
//return true if button should be enabled or not
return true;
}
);
这里,有一个匿名方法,其中有那个“点击的按钮”。
这将捕获父ViewModel中的变量。
因此,您可以在viewmodel中设置一个公共属性,该属性绑定到视图中的text属性。
为了使视图做出响应,您需要实现inotifypropertychanged并在该公共属性的setter中引发property changed。
https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification。
从上面。
如果PersonName绑定到视图中的textblock。
public string PersonName
{
get { return name; }
set
{
name = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged();
}
}
在该命令中,您可以执行以下操作:
PersonName = "Andy";
它调用PersonName的setter,绑定到PersonName的textblock将读取新值。
我有以下代码: MainWindow.xaml Employee.cs 这是非常简单的代码,我只想将我的 Employee.cs 类中的 和 属性绑定到 MainWindow.xaml 中文本框的文本属性,但在运行代码时,这些文本框中没有出现任何内容。绑定正确吗?
问题内容: 在泊坞窗中,我想这样做: 但是,因为没有cd命令,所以每次都必须传递完整路径(使XYZ / fullpath)。有什么好的解决方案吗? 问题答案: 您可以运行脚本,也可以运行更复杂的参数。这是我先前下载的Dockerfile中的示例: 由于使用了“ &&”,如果所有先前的命令都成功,它将仅到达最终的“ pip install”命令。 实际上,由于每个RUN都会创建一个新的提交和AUFS
在我的wpf项目中,我使用以下代码更改鼠标光标: 我调度员。调用(New SetCursorCallback(SetCursor的地址),New Object(){Cursors.Wait}) 定义如下: 委托子SetCursorCallback(ByVal[CursorType]作为系统。Windows。输入。光标) 在一个处理按键的子程序中,我检查按下的键是否为删除键,如果为真,我使用消息框提
所以我正在编辑一个插件,是为我的世界龙头。 在反编译程序/调试器中,这就是“FlyCommand”显示的内容。在我下面上课。龙卷风915。蓬松的 https://pastebin.com/KB3jLX7S 下面是我的intellij项目中显示的同一个文件。 https://pastebin.com/kqX3DzTu 我想换个角色 我从intellij假设这是它需要编辑的地方。但是我不知道如何改变,
在我的项目中,我有固定的页眉和页脚,以及可变的内容。所以我已经将ContentControl放在了我的窗口中。 看起来是这样的... 我创建了两个名为page1、Page2用户控件。第1页有一个按钮,当我单击该按钮时,ContentControl有显示Page2。 所以我用button1_Click编写了下面的代码 但是在点击按钮的时候ContentControl没有改变我能做什么呢? 我的pag
如何使用cli命令而不是手动使用将当前运行的项目更改为GCP(Google Cloud Platform)帐户中的另一个项目。
调用时出现问题 System. Windows. Data错误:4:找不到引用“RelativeSource FindAncestor, AncestorType='PhotoBrowser. List. ViewModel. ListViewModel', AncestorLine='1”的绑定源。BindingExpress:路径=测试;数据项=空;目标元素是“EventTo命令”(HashC
我有一个雇主组合。选择雇主后,表格中会填入特定于雇主的数据: 下面是它绑定到的属性和检查表是否脏的方法。如果表是脏的,则提示用户如果他们改变雇主,改变将丢失: 一切似乎都正常工作: 用户选择更新表的雇主('KMH')。 用户对表进行更改。 用户然后选择不同的雇主('MPC') 提示用户更改将丢失 用户选择“否”并且Can火雇主返回“假” 选择雇主不改变(跳过if{}块) 然而,在GUI中,雇主选项