当前位置:  开发笔记 > 编程语言 > 正文

C#WPF - 如何组合datatrigger和触发器?

如何解决《C#WPF-如何组合datatrigger和触发器?》经验,为你挑选了1个好方法。

我不知道是否需要结合DataTrigger和Trigger,如果有更好的方法请告诉我.

我的目标是,创建一个菜单(带图标),图标会在遇到悬停或选定的事件时发生变化.

这是一个枚举定义所有菜单类型:

public enum PageTypes:byte
{
    NotSet = 0,
    HomePage = 1,
    ShopPage = 2,
    AboutPage = 3
}

然后我创建了一个MenuItemModel来表示每个菜单项:

public class MenuItemModel : INotifyPropertyChanged
{
    private PageTypes _menuItemType = PageTypes.NotSet;
    public PageTypes MenuItemType { get { return _menuItemType; } set { if (value != _menuItemType) { _menuItemType = value; RaisePropertyChanged(() => MenuItemType); } } }

    private bool _isSelected = false;
    public bool IsSelected { get { return _isSelected; } set { if (value != _isSelected) { _isSelected = value; RaisePropertyChanged(() => IsSelected); } } }
}

好的,然后我开始创建UI.



    

到目前为止一切都很简单,但是当我尝试制作mouseOver和Selected效果时,问题就来了.

例如,如果鼠标超过home_normal.png,则应更改为home_hover.png,如果IsSelected属性为TRUE,则应忽略hover触发器,然后使用home_selected.png.但是有3个图像,我怎么知道应该改变什么图像?



    

如果您可以在"我的计划"评论中看到问号,那么这就是我的问题:我应该在"价值"字段中做什么?



1> 小智..:

你可以MultiDataTrigger像这样使用.但是你应该为所有类型的页面添加相同的3个触发器.请注意,下面的触发器会覆盖下面,条件的作用类似于逻辑AND.


    
        
    
    
        
            
            
        
        
    
    
        
            
            
        
        
    

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有