zoukankan      html  css  js  c++  java
  • 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来转换出我们想要的事件。

  • 相关阅读:
    selenium2截图ScreenShot的使用
    selenium2断言类Assert的使用
    selenium2中的TestNg注解和数据驱动的简介及使用
    bash函数定义/使用/传参…
    bash字符串操作
    bash数组操作-定义/初始化/赋值…
    bash实例-参数/函数/统计IP
    01.AutoMapper 之约定(Conventions)
    00.AutoMapper 之入门指南(Getting Started Guide)
    AutoMapper
  • 原文地址:https://www.cnblogs.com/LCHL/p/4038905.html
Copyright © 2011-2022 走看看