我在WPF中創建了自己的控件。最初,我將它創建爲一個用戶控件,但發現首選的方法是創建一個繼承自控件的類,然後將各自的xaml放置在Generic.xaml中的控件模板中。這工作得很好,當它在我的exe文件,但當我把它移動到一個dll的邊界消失了我的控制。我的控件基於文本框,幾乎是複製和粘貼文本框的控件模板,並添加一個用戶可以單擊的按鈕。我已經確定了不在工作的控件模板的相關部分,即下面的BorderBrush =「{TemplateBinding Border.BorderBrush}」位以及下一行。自定義控件上的WPF控件模板
<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。我們綁定的邊界在哪裏?可視化樹不顯示屬於我的控件的邊框。如果我用硬編碼值替換這兩行,那麼我會得到一個邊界。我懷疑可能有某些東西缺失的DLL exe文件,如樣式或適用於邊框?
預先感謝任何回覆以及花時間閱讀的人。 乾杯, 邁克爾
我認爲你應該看到'TextBox'默認'Template'。據我所知,接近90%的控件使用'Border'作爲第一個'Template'標籤。可能是你的「影子」邊框?另請嘗試[snoop](http://snoopwpf.codeplex.com/)UI調試器。 – stukselbax
[msdn](http://msdn.microsoft.com/en-us/library/ms752068(v = VS.100).aspx) – stukselbax
您近距離了。答案是查看文本框的默認樣式,而不是模板。這包含了相關信息。 – MikeKulls