So fügen Sie ein userControl -spezifisches ViewModel hinzu, erreichen aber dennoch die Abhängigkeitseigenschaft veränder
Posted: 08 Feb 2025, 16:49
Ich möchte eine WPF -Klassenbibliothek erstellen, die auf einem TreeView basiert, um JSON -Zeichenfolgen zu visualisieren. Ich möchte nicht die JSON -String übergeben. Ich kann die Zeichenfolge im JSONCHANGEDCallback ohne DataContext erhalten. Wenn ich dem ViewModel einen DataContext hinzufüge, ist der jsonChangedCallback nicht länger erreicht. Ich bin mir noch nicht sicher, wie ich es erreichen werde, aber ich glaube, dass ein bestimmter ViewModel die TreeView Knotenexpansionen verarbeiten muss.
für In dem Zeitpunkt möchte ich die JSON -Zeichenfolge nicht aus einer Datei laden, sondern sie direkt aus der Verbraucher -App bereitstellen. Ich werde es wahrscheinlich später ändern, wenn Performances wichtig sind. Nimmt den eine aus der Verbraucher -App. Ich erhalte jedoch keinen Bindungsfehler. >
für In dem Zeitpunkt möchte ich die JSON -Zeichenfolge nicht aus einer Datei laden, sondern sie direkt aus der Verbraucher -App bereitstellen. Ich werde es wahrscheinlich später ändern, wenn Performances wichtig sind. Nimmt den eine aus der Verbraucher -App. Ich erhalte jedoch keinen Bindungsfehler. >
- Verbraucher -App (vereinfacht)
Code: Select all
< /code>
WPF -Klasse Bibliothek < /strong> < /li>
< /ul>
< /code>
public partial class JsonVisualizer : TreeView
{
#region Public Static Readonly Members
public static readonly DependencyProperty JsonProperty =
DependencyProperty.Register(
nameof(Json),
typeof(string),
typeof(JsonVisualizer),
new PropertyMetadata(null, JsonChangedCallback));
public string Json
{
get => (string)GetValue(JsonProperty);
set => SetValue(JsonProperty, value);
}
public JsonVisualizer()
{
InitializeComponent();
//DataContext = new JsonVisualizerViewModel();
}
private static void JsonChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var json = e.NewValue;
// Code reached if no DataContext specified in the constructor.
}
}