Home  >  Article  >  Database  >  WPF 小技巧

WPF 小技巧

WBOY
WBOYOriginal
2016-06-07 15:10:42992browse

在使用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>TabItem <span>>
                <span>TabItem.Header<span>>
                    <span>Grid<span>>
                        <span>CheckBox <span>Visibility<span>="Collapsed"<span> IsChecked<span>="<span>{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}}<span>" <span>>
                            <span>i:Interaction.Triggers<span>>
                                <span>i:EventTrigger <span>EventName<span>="Checked"<span>>
                                    <span>Custom:EventToCommand <span>Command<span>="<span>{Binding xxxCommand, Mode=OneWay}<span>"<span>/>
                                <span><span>i:EventTrigger<span>>
                                <span>i:EventTrigger <span>EventName<span>="Unchecked"<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>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>

 重点在这里:IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}},Mode=TwoWay}

TabItem虽然没有我们想要的事件,但是有个IsSelected属性,所以我们可以借助CheckBox来转换出我们想要的事件。

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn