WPF 小技巧

在使用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"

 <i:Interaction.Triggers>
      <i:EventTrigger EventName="xxx">
           <Custom:EventToCommand Command="{Binding xxxCommand, Mode=OneWay}"/>
      </i:EventTrigger>
</i:Interaction.Triggers>

有时候我们会为“EventName”伤透脑筋:

 <TabControl>
            <TabItem >

     xxx

    </TabItem>

            <TabItem >

     xxx

    </TabItem>

</TabControl>

我希望在选中第二个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来转换出我们想要的事件。

 

转载于:https://www.cnblogs.com/LCHL/p/4038905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值