【WPF】XAML 常用
鼠标拖动列表类的操作,直接将View的X与VM中的属性双向绑定会非常卡,可以用Behaviors中转
//交互和计算在这个类中进行,将值传给VM
class MouseActionBehavior : Behavior<UIElement>
以下是一个ListBox的ItemSource绑定了一个“List<int>”,Command和CommandParameter分别绑定了VM中不同层级的对象
Style的基本用法
写在资源字典上的Style也可以绑定数据,DataTrigger用于非控件自身的属性
资源字典中可以引入另一个资源字典
转换器、样式在XAML页面引用
多重绑定,绑定当前XAML自身的属性
绑定当前XAML其他元素的属性
Height="{Binding ElementName=XX,Path=ActualHeight}
Grid.Column或者Row绑定VM
简单的Command
class MyCommand : ICommand
{
private readonly Action<object> _execAction;
private readonly Func<object, bool> _changeFunc;
public MyCommand(Action<object> execAction, Func<object, bool> changeFunc)
{
_execAction = execAction;
_changeFunc = changeFunc;
}
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return this._changeFunc.Invoke(parameter);
}
public void Execute(object parameter)
{
_execAction.Invoke(parameter);
}
}
//使用
public ICommand XXXCommand => new MyCommand(XXXAction, CanExc => true);
private void XXXAction(object obj)
{
//...
}
简单的VMBase
class MyViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律