在使用mvvm模式开发时,对于Command的绑定是一件很伤脑筋的事情,尽管有强大的Blend类库支持: xmlns:Custom="http://HdhCmsTestgalasoft.ch/mvvmlight" xmlns:i="http://schemas.microsoft测试数据/expression/2010/interactivity" xmlns:ei="http://schemas.microsof
在使用mvvm模式开发时,对于Command的绑定是一件很伤脑筋的事情,尽管有强大的Blend类库支持:
xmlns:Custom="http://HdhCmsTestgalasoft.ch/mvvmlight"
xmlns:i="http://schemas.microsoft测试数据/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft测试数据/expression/2010/interactions"
有时候我们会为[EventName]伤透脑筋:
xxx
xxx
我希望在选中第二个TabItem的时候做一些操作,例如加载数据,反之则清除数据,释放内存。
有了Blend,我们很愉快的空降了一个EventToCommand,然后选择EventName——哎~马!根本木有啥[选中]/[不选中]事件!好忧伤~~
这时候[非天秤座]的小伙伴肯定就果断放弃mvvm模式,写后台代码去了,本文完!
哎,哎,哎,别打脸,别……
我说,我说还不行吗!
TabItem > TabItem.Header > Grid > CheckBox Visibility ="Collapsed" IsChecked =" {Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}} " > i:Interaction.Triggers > i:EventTrigger EventName ="Checked" > Custom:EventToCommand Command =" {Binding xxxCommand, Mode=OneWay} " /> i:EventTrigger > i:EventTrigger EventName ="Unchecked" > Custom:EventToCommand Command =" {Binding xxxCommand} " /> i:EventTrigger > i:Interaction.Triggers > CheckBox > TextBlock Text ="设置" FontSize ="32" Padding ="20,5" /> Grid > TabItem.Header > 省略 --> TabItem >
重点在这里:IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}},Mode=TwoWay}
TabItem虽然没有我们想要的事件,但是有个IsSelected属性,所以我们可以借助CheckBox来转换出我们想要的事件。