Ich möchte eine Abhängigkeitseigenschaft zu einer UserControl
die eine Sammlung von UIElement
Objekte. Sie könnten vorschlagen, dass ich meine Kontrolle von folgenden Objekten ableiten sollte Panel
und verwenden Sie die Children
Eigenschaft, aber das ist in meinem Fall keine geeignete Lösung.
Ich habe meine UserControl
wie diese:
public partial class SilverlightControl1 : UserControl {
public static readonly DependencyProperty ControlsProperty
= DependencyProperty.Register(
"Controls",
typeof(UIElementCollection),
typeof(SilverlightControl1),
null
);
public UIElementCollection Controls {
get {
return (UIElementCollection) GetValue(ControlsProperty);
}
set {
SetValue(ControlsProperty, value);
}
}
}
und ich benutze es so:
<local:SilverlightControl1>
<local:SilverlightControl1.Controls>
<Button Content="A"/>
<Button Content="B"/>
</local:SilverlightControl1.Controls>
</local:SilverlightControl1>
Leider erhalte ich den folgenden Fehler, wenn ich die Anwendung ausführe:
Object of type 'System.Windows.Controls.Button' cannot be converted to type
'System.Windows.Controls.UIElementCollection'.
In der Einstellen einer Eigenschaft mithilfe einer Auflistungssyntax Abschnitt heißt es ausdrücklich, dass:
[...] können Sie [UIElementCollection] nicht explizit in XAML angeben, da UIElementCollection keine konstruierbare Klasse ist.
Was kann ich tun, um mein Problem zu lösen? Ist die Lösung einfach, eine andere Auflistungsklasse anstelle von UIElementCollection
? Wenn ja, welche Sammelklasse wird empfohlen?