我在 WPF 中创建了自己的控件。最初我将它创建为用户控件,但发现这样做的首选方法是创建一个从控件继承的类,然后将我各自的 xaml 放在里面的控件模板中Generic.xaml
。
当它在我的 exe 中时效果很好,但是当我将它移动到 dll 时,边框从我的控件中消失了。我的控件基于文本框,几乎是文本框控件模板的复制和粘贴,并添加了一个用户可以单击的按钮。
我已经确定了控制模板的相关部分不起作用,即BorderBrush="{TemplateBinding Border.BorderBrush}"
下面的位以及下一行。
<Style TargetType="{x:Type local:ButtonBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ButtonBox}">
<mwt:ListBoxChrome
Background="{TemplateBinding Panel.Background}"
BorderBrush="{TemplateBinding Border.BorderBrush}"
BorderThickness="{TemplateBinding Border.BorderThickness}"
RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}"
RenderFocused="{TemplateBinding UIElement.IsKeyboardFocusWithin}"
Name="Bd"
SnapsToDevicePixels="True">
我了解模板绑定,但我不明白我们为什么要绑定到Border.BorderBrush
. border
我们绑定的那个在哪里?可视化树没有显示属于我的控件的边框。如果我用硬编码值替换这两行,那么我会得到一个边框。我怀疑dll中可能缺少exe具有的某些内容,例如样式或适用于Border的内容?
提前感谢您的任何回复以及任何花时间阅读的人。干杯,迈克尔