Wenn ich Ihre Frage richtig verstehe Sie eine FrameworkElement
haben, die eine einfache alte gewöhnliche Eigenschaft macht, die nicht oben als gesichert ist Abhängigkeitseigenschaft Sie möchten es jedoch als Ziel einer Bindung festlegen.
Zunächst wäre es unwahrscheinlich und in den meisten Fällen unmöglich, TwoWay-Bindung an die Arbeit zu bringen. Wenn Sie jedoch nur eine Möglichkeit zur Bindung haben möchten, können Sie eine angefügte Eigenschaft als Ersatz für die tatsächliche Eigenschaft erstellen.
Lets imagine Ich habe ein StatusDisplay
Framework-Element, das eine Zeichenfolge Message
Eigenschaft hat, die für einige wirklich dumme Grund Message
als Abhängigkeitseigenschaft nicht unterstützt.
public static StatusDisplaySurrogates
{
public static string GetMessage(StatusDisplay element)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
return element.GetValue(MessageProperty) as string;
}
public static void SetMessage(StatusDisplay element, string value)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
element.SetValue(MessageProperty, value);
}
public static readonly DependencyProperty MessageProperty =
DependencyProperty.RegisterAttached(
"Message",
typeof(string),
typeof(StatusDisplay),
new PropertyMetadata(null, OnMessagePropertyChanged));
private static void OnMessagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
StatusDisplay source = d as StatusDisplay;
source.Message = e.NewValue as String;
}
}
Natürlich, wenn die StatusDisplay
Kontrolle seiner Message
Eigenschaft hat direkt der Zustand dieses Surrogat aus irgendeinem Grund geändert werden nicht mehr entsprechen. Trotzdem ist das für Ihre Zwecke nicht wichtig.