So war es ein langer Tag herauszufinden, die besten Weg, um eine Eigenschaft verbindlich zu implementieren. Am Ende davon habe ich eine hail mary und gewonnen! ... aber ich weiß nicht warum. ein Fundamentalist zu sein, würde ich gerne wissen, warum diese Linie gearbeitet:C# MVVM WPF-Bindung an eine benutzerdefinierte verschachtelte Eigenschaft
FormatString="{Binding ElementName=comboRingBuffer, Path=Tag.Format}"
in den folgenden Code-behind:
// Argument is a struct with a Limit "property"
private Argument ringBuffer;
public Limit RingBufferPrefix
{
get
{
return this.ringBuffer.Limit;
}
set
{
this.ringBuffer.Limit = value;
this.OnPropertyChanged(nameof(this.RingBufferPrefix));
}
}
public class Limit
{
public Limit(string prefix, string format)
{
this.Prefix = prefix;
this.Format = format;
}
public string Prefix { get; set; }
public string Format { get; set; }
public override string ToString()
{
return this.Prefix;
}
}
und XAML:
<ComboBox x:Name="comboRingBuffer"
SelectionChanged="SelectionChanged_Event"
Tag="{Binding Path=RingBufferPrefix}" />
<xctk:IntegerUpDown x:Name="integerRingBuffer"
DockPanel.Dock="Right"
Style="{StaticResource DigitalInteger}"
ValueChanged="ValueChanged_Event"
FormatString="{Binding ElementName=comboRingBuffer, Path=Tag.Format}"
Value="{Binding Path=RingBuffer}" />
ich sicher gedacht das würde nur sagen, dass das Tag
ein object
ist und nichts anzeigt.
Aber es weiß, ist, dass das 'ComboBox' eine' Tag' hat, die eine 'object' sein sollte. Woher kannte es den Typ "Limit", der an die Eigenschaft gebunden war? – reasra
was meinst du mit Limit? Ich schlage vor, Sie gehen durch [this] (http://Stackoverflow.com/a/7000922/2470362) und verstehen, wie der Konverter verwendet wird, um den Typ der Abhängigkeitseigenschaft zu entsprechen. In Ihrem Fall übergeben Sie den gleichen Typ an die Bindung, andernfalls kann es Fehler zur Laufzeit auslösen. –