当前位置:   article > 正文

WPF学习笔记-资源绑定_wpf commandparameter 绑定 text

wpf commandparameter 绑定 text

目录

1.属性变更事件

2.ICommand接口

3.ComboBox数据绑定



WPF通过资源绑定可以省略很多属性变更交互的代码。

1.属性变更事件

属性变更时通知窗体进行更新,需要设置属性变更事件。类需要继承INotifyPropertyChanged接口,然后创建PropertyChangedEventHandler属性变更委托,并调用属性变更函数。

  1. public class AutoSampleName : INotifyPropertyChanged
  2. {
  3. /// <summary>
  4. /// 实现接口
  5. /// </summary>
  6. public event PropertyChangedEventHandler PropertyChanged;
  7. /// <summary>
  8. /// 属性变更事件
  9. /// </summary>
  10. /// <param name="Path">事件源</param>
  11. public void OnPropertyChanged([CallerMemberName] string propertyName = "")
  12. {
  13. this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  14. }
  15. }

INotifyPropertyChanged接口需要引用:

        using System.ComponentModel;

[CallerMemberName] string propertyName = "" 是对方法名的调用方式,支持调用方法的时候自动获取出发事件的方法属性的名称作为参数。需要添加引用:using System.Runtime.CompilerServices;

属性变更时,在set访问器中调用属性变更事件。

  1. public bool IsEnabled
  2. {
  3. get { return isEnabled; }
  4. set
  5. {
  6. isEnabled = value;
  7. OnPropertyChanged();
  8. }
  9. }

2.ICommand接口

ICommand可用于实现Xaml和后台代码的方法绑定。

  1. /// <summary>
  2. /// Base command class.
  3. /// </summary>
  4. /// <remarks>通过事件委托,以便跨线程调用</remarks>
  5. public class BaseCommand : ICommand
  6. {
  7. /// <summary>
  8. /// Event handler
  9. /// 事件出发时先调用CanExecute(),然后调用
  10. /// </summary>
  11. public event EventHandler CanExecuteChanged;
  12. /// <summary>
  13. /// Execute action.
  14. /// </summary>
  15. public Action<object> DoExecute { get; set; }
  16. /// <summary>
  17. /// Canexecute method.
  18. /// </summary>
  19. public Func<object, bool> DoCanExecute { get; set; } = new Func<object, bool>(obj => true);
  20. /// <summary>
  21. /// Can execute.
  22. /// </summary>
  23. /// <param name="parameter"></param>
  24. /// <returns></returns>
  25. public bool CanExecute(object parameter)
  26. {
  27. //初始化时会调用一次
  28. return DoCanExecute?.Invoke(parameter) == true;
  29. }
  30. /// <summary>
  31. /// Excute.
  32. /// </summary>
  33. /// <param name="parameter"></param>
  34. public void Execute(object parameter)
  35. {
  36. //实例化委托。
  37. DoExecute?.Invoke(parameter);
  38. }
  39. /// <summary>
  40. /// 执行委托,调用CanExecute。
  41. /// </summary>
  42. public void DoCanExecuteChanged()
  43. {
  44. CanExecuteChanged?.Invoke(this, EventArgs.Empty);
  45. }
  46. }

3.ComboBox数据绑定

<ComboBox  ItemsSource="{Binding GenoTypeList}" DisplayMemberPath="MainGenotype" SelectedValuePath="ID" SelectedItem="{Binding SelectedGenotype}" Text="{Binding SelectedGenotype.MainGenotype}" />

Xaml绑定数据时,若单独绑定ItemsSource,会发生后台更新SelectedItem后,但是UI界面并没有更新具体的数据。

需要同时绑定Text数据,才能正常更新数据。

数据绑定时,它可以通过“类.属性”的方法绑定某一个类的具体属性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/928504
推荐阅读
相关标签
  

闽ICP备14008679号