したがって、のベストプラクティスバインディングの実装方法はです。それまでに、私はhail maryとウォンを投げた! ...しかし、私は理由を知らない。次のコードビハインドでc#カスタムネストされたプロパティへのMVVM WPFのバインド
FormatString="{Binding ElementName=comboRingBuffer, Path=Tag.Format}"
を::
// 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;
}
}
および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}" />
原理主義なので、私はこの行が働いた理由を知りたいのですがTag
はobject
であり、何も表示していないとだけ言います。
.. ILSpyや他の人のように、このクラスの実装を確認するためのツールを使用することができます。しかし、それは知っているすべては 'ComboBox'は' object'あるべき 'Tag'を持っていることです。どのようにプロパティにバインドされていた 'Limit'型を知っていましたか? – reasra
制限は何ですか?私はあなたが[this](http://stackoverflow.com/a/7000922/2470362)を見て、コンバータがどのように依存関係プロパティの種類にマッチするのかを理解することをお勧めします。あなたの場合は、同じ型をバインディングに渡しています。そうでないと、実行時にエラーが発生する可能性があります。 –