none
如何使工具栏中的自定义控件具有系统预设的显示效果? RRS feed

  • 问题

  • 放入工具栏(ToolBar)中控件,对于标准Button,会扁平化,在鼠标指到该Button上时,该按钮背景色会变化并且外围显示一个方框,但对于自定义控件(继承自button),就不会有这样的变化,请问怎样使自定义控件有同样的效果?
    2014年5月10日 10:52

答案

  • 把以下代码加到你的继承自button的自定义控件中即可:

            protected override void OnInitialized(EventArgs e)
            {
                if (this.Style == null && this.Parent is ToolBar)
                {
                    this.Style = (Style)FindResource(ToolBar.ButtonStyleKey);
                }
                base.OnInitialized(e);
            }
    Toolbar在添加控件时,会自动检查控件的类型,如果是Button(精确),会自动给Button应用ToolBarButtonStyle,虽然你的自定义控件是继承自Button的,但是在检查时是无法跟Button类型匹配的(typeof(你的控件) != typeof(Button)),所以Toolbar不能自动更改控件的Style。所以只能在代码里手动更改了。


    • 已编辑 lapheal 2014年5月10日 15:00
    • 已标记为答案 seewold 2014年5月11日 5:54
    2014年5月10日 14:54

全部回复

  • 把以下代码加到你的继承自button的自定义控件中即可:

            protected override void OnInitialized(EventArgs e)
            {
                if (this.Style == null && this.Parent is ToolBar)
                {
                    this.Style = (Style)FindResource(ToolBar.ButtonStyleKey);
                }
                base.OnInitialized(e);
            }
    Toolbar在添加控件时,会自动检查控件的类型,如果是Button(精确),会自动给Button应用ToolBarButtonStyle,虽然你的自定义控件是继承自Button的,但是在检查时是无法跟Button类型匹配的(typeof(你的控件) != typeof(Button)),所以Toolbar不能自动更改控件的Style。所以只能在代码里手动更改了。


    • 已编辑 lapheal 2014年5月10日 15:00
    • 已标记为答案 seewold 2014年5月11日 5:54
    2014年5月10日 14:54
  • 很好,谢谢!
    2014年5月11日 5:54