在使用mvvm模式开发时,对于command的绑定是一件很伤脑筋的事情,尽管有强大的blend类库支持: xmlns:Custom="http://www.galasoft.ch/mvvmlight" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsof
在使用mvvm模式开发时,对于command的绑定是一件很伤脑筋的事情,尽管有强大的blend类库支持:
xmlns:Custom="http://www.galasoft.ch/mvvmlight"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
有时候我们会为“EventName”伤透脑筋:
xxx
xxx
我希望在选中第二个TabItem的时候做一些操作,例如加载数据,反之则清除数据,释放内存。
有了Blend,我们很愉快的空降了一个EventToCommand,然后选择EventName——哎~马!根本木有啥“选中”/“不选中”事件!好忧伤~~
这时候“非天秤座”的小伙伴肯定就果断放弃mvvm模式,写后台代码去了,本文完!
哎,哎,哎,别打脸,别……
我说,我说还不行吗!
<span><<span>TabItem <span>>
<span><<span>TabItem.Header<span>>
<span><<span>Grid<span>>
<span><<span>CheckBox <span>Visibility<span>="Collapsed"<span> IsChecked<span>="<span>{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}<span>" <span>>
<span><<span>i:Interaction.Triggers<span>>
<span><<span>i:EventTrigger <span>EventName<span>="Checked"<span>>
<span><<span>Custom:EventToCommand <span>Command<span>="<span>{Binding xxxCommand, Mode=OneWay}<span>"<span>/>
<span></<span>i:EventTrigger<span>>
<span><<span>i:EventTrigger <span>EventName<span>="Unchecked"<span>>
<span><<span>Custom:EventToCommand <span>Command<span>="<span>{Binding xxxCommand}<span>"<span>/>
<span></<span>i:EventTrigger<span>>
<span></<span>i:Interaction.Triggers<span>>
<span></<span>CheckBox<span>>
<span><<span>TextBlock <span>Text<span>="设置"<span> FontSize<span>="32"<span> Padding<span>="20,5" <span>/>
<span></<span>Grid<span>>
<span></<span>TabItem.Header<span>>
<span><!--<span>省略<span>-->
<span></<span>TabItem<span>></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>重点在这里:IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}},Mode=TwoWay}
TabItem虽然没有我们想要的事件,但是有个IsSelected属性,所以我们可以借助CheckBox来转换出我们想要的事件。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号