Иногда это не красиво, но грубая сила несет день ...
Из источника:
[MarkupExtensionReturnType(typeof(PriorityBinding))]
public sealed class Priority:MarkupExtension {
readonly BindingBase[] bindings;
#region Constructors
public Priority(BindingBase b1) {
bindings = new [] {b1};
}
public Priority(BindingBase b1, BindingBase b2) {
bindings = new [] {b1, b2};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3) {
bindings = new [] {b1, b2, b3};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3,
BindingBase b4) {
bindings = new [] {b1, b2, b3, b4};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3,
BindingBase b4, BindingBase b5) {
bindings = new [] {b1, b2, b3, b4, b5};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3,
BindingBase b4, BindingBase b5, BindingBase b6) {
bindings = new [] {b1, b2, b3, b4, b5, b6};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3,
BindingBase b4, BindingBase b5, BindingBase b6, BindingBase b7) {
bindings = new [] {b1, b2, b3, b4, b5, b6, b7};
}
public Priority(BindingBase b1, BindingBase b2, BindingBase b3,
BindingBase b4, BindingBase b5, BindingBase b6, BindingBase b7, BindingBase b8) {
bindings = new [] {b1, b2, b3, b4, b5, b6, b7, b8};
}
#endregion
public override object ProvideValue(IServiceProvider serviceProvider) {
var binding = new PriorityBinding();
foreach (var item in bindings) {
binding.Bindings.Add(item);
}
return binding;
}
}