WPF学习之路(六)Command
在WPF中,命令綁定機制是相比于事件更高級的概念,把應用程序的功能劃分為多個任務,任務由多種途徑觸發。
應用Command Binding使代碼更符合MVVM模式(Model-View-ViewModel),類似于MVC模式(Model-View-Control)。這兩種模式在以后的BLOG中會有詳細的介紹。目的都是為了更好的分離前后臺邏輯。
?
一個簡單的Button
<Button Content="Button" Click="Button_Click" /> private void Button_Click(object sender, RoutedEventArgs e) {MessageBox.Show("Hello WPF"); }?
前臺顯示需要通過Button_Click方法跟后臺關聯上,如果想更好的分離這兩部分,將Click事件替換成Command
?
自定義Command
using System; using System.Windows; using System.Windows.Input;public class MyCommand : ICommand {public bool CanExecute(object parameter){return true;}public event EventHandler CanExecuteChanged;public void Execute(object parameter){MessageBox.Show("Hello WPF");} } <Button Content="Button" x:Name="btn1" /> public MainWindow() {InitializeComponent();btn1.Command = new MyCommand(); }現在邏輯已經被分離到MyCommand中了
?
使用預定義Command
ApplicationCommands提供了很多預定義Command
<Button Content="Button" x:Name="btn2" Command="ApplicationCommands.Close"/>但是這些命令并沒有實現?("▔□▔)
?
使用Command Binding添加邏輯
public MainWindow() {InitializeComponent();var OpenCmdBinding = new CommandBinding(ApplicationCommands.Close,OpenCmdExecuted,OpenCmdCanExecute);this.CommandBindings.Add(OpenCmdBinding); }void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e) {this.Close(); }void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e) {e.CanExecute = true; }?
?
有些控件沒有Command屬性
<Button Grid.Row="2" Height="100" Width="100" HorizontalAlignment="Left" Content="Decrease" Command="Slider.DecreaseLarge" CommandTarget="{Binding ElementName=slider}"/> <Slider Grid.Row="2" x:Name="slider" Width="100"></Slider> <Button Grid.Row="2" Height="100" Width="100" HorizontalAlignment="Right" Content="Increase" Command="Slider.IncreaseLarge" CommandTarget="{Binding ElementName=slider}"/>CommandParameter可以給命令傳遞一個值
CommandTarget:觸發的命令目標
?
?
更多的Command介紹
http://www.cnblogs.com/Curry/archive/2009/07/27/1531798.html
http://www.cnblogs.com/gaixiaojie/archive/2010/09/01/1815015.html
?
?
?
?
?
?
?
To be continue...
轉載于:https://www.cnblogs.com/alex09/p/4434464.html
總結
以上是生活随笔為你收集整理的WPF学习之路(六)Command的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阅读《构建之法》1-5章
- 下一篇: [BZOJ3275]Number解题报告