このような簡単な設定があります。
- XAML の ContentControl
- ContentControl へのコード ビハインドの adorner レイヤーに AdornerY を追加します。
- AdornerY のテンプレートは、カスタム ControlTemplate AdornerTemplateY に設定されています
1 と 2 で問題が発生しないと確信しているので、3 のコードをここに投稿します。
Visual Studio Express はエラーに対してあまり友好的ではなく、単に次のように表示されます。
タイプ 'System.ArgumentException' の初回例外が PresentationFramework.dll で発生しました
コードの何が問題になっていますか? 本当にありがとう。
class AdornerTemplateY : ControlTemplate
{
FrameworkElementFactory Chrome;
public AdornerTemplateY(ContentControl designerItem)
: base(typeof(AdornerY))
{
Chrome = new FrameworkElementFactory(typeof(Rectangle));
Chrome.SetValue(Rectangle.NameProperty, "INTERNAL_CHROME");
Chrome.SetValue(Rectangle.FillProperty, Brushes.PowderBlue);
Chrome.SetValue(Rectangle.StrokeProperty, Brushes.Black);
Chrome.SetValue(Rectangle.DataContextProperty, designerItem);
Chrome.SetValue(Rectangle.IsHitTestVisibleProperty, true);
this.VisualTree = this.Chrome;
this.Triggers.Add(CreateTrigger());
}
private Trigger CreateTrigger()
{
Trigger TriggerFocus = new Trigger
{
Property = AdornerY.IsMouseOverProperty,
Value = true,
Setters =
{
new Setter
{
Property = AdornerY.VisibilityProperty,
Value = Visibility.Collapsed
},
}
};
return TriggerFocus;
}
}