type AdderType() =
/// Appends to the container.
static member (+)
(cont:DockPanel,child:#UIElement) =
cont.Children.Add child |> ignore
child
Wenn ich die Klasse wie oben gemacht und versuchen Sie so etwas.Wie kann ich Operatoren für WPF-Container überladen?
let dock = DockPanel()
let win = Window(Title = "Check the Window Style", Content = dock)
let menu = dock + Menu()
erhalte ich die Fehler None of the types 'DockPanel,Menu' support the operator '+'.
ich inspiriert wurde, die oben durch Phil Trelford's Bindung Beispiel zu machen, die so geht:
type DependencyPropertyValuePair(dp:DependencyProperty,value:obj) =
member this.Property = dp
member this.Value = value
static member (+)
(target:#UIElement,pair:DependencyPropertyValuePair) =
target.SetValue(pair.Property,pair.Value)
target
Die oben aus irgendeinem Grund funktioniert. Ich habe keine Idee warum. Wäre es möglich, den +
oder einen anderen Operator zu überlasten, so dass ich Container elegant hinzufügen könnte?
Sie können immer eine globale Überladung des Operators tun - aber Sie wollen nicht + in diesem Fall –
Ich habe versucht, überladen '++' und '| +', aber es hat nicht funktioniert. –
Und '% +%' gerade jetzt. Ich bezweifle, dass '-' funktionieren würde. Gibt es einen Trick? –