问题描述:作者写了一个用户控件(由两个button组成),但是将其放入Toolbar中的时候不会像其他控件如button一样自动匹配上Toolbar的样式。
原因(猜测)
Toolsbar拥有一套控件的样式,当控件放入Toolbar中之后,会自动使用Toolbar定义的统一的样式,由于Toolbar中没有对应的用户控件的样式,所以用户控件样式不会改变,就会导致用户控件的样式与Toolbar中其他控件的样式风格不统一。
解决办法
由于作者写的用户控件由两个button控件组成,而Toolbar中有button的样式,所以可以将Toolbar中的样式应用到button上。
具体方案
判断当前控件是否属于Toolbar,如果属于就将toolbar的button样式应用到用户控件中的button。其中(DefaultButton和DropDownButton)是用户控件的两个组成部分。
private void CustomButton_Loaded(object sender, RoutedEventArgs e)
{
if (this.Parent is ToolBar)
{
DefaultButton.Style = (Style)FindResource(ToolBar.ButtonStyleKey);
DropDownButton.Style = (Style)FindResource(ToolBar.ButtonStyleKey);
}
}
然后在用户控件的构造函数中将其添加到Loaded事件处理程序中。
public SplitButton()
{
this.Loaded += SplitButton_Loaded;
}