インデクサーが定義されたクラスがあります。私がデフォルトのIndexerName(Item)WPF要素をうまく更新し続ける限り。例: XAMLでWPF要素も更新されるように、変更されたIndexerNameをC#でどのように使用するのですか?
public byte this[int index] {
get { return ListElements[index].Value; }
set {
ListElements[index].Value = value;
FirePropertyChanged("Item[]");
}
}
protected void FirePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
述べたように、これは現在、うまく動作したよう
<Label Content="{Binding CurrentDevice[3]}"/>
を次のように私はそれを結合しています。しかし、(イベントハンドラメソッドを通知など)のコードで読みやすくするために、私は(e.PropertyName ==「ElementItemをチェックするときに、私は提供C#のイベントハンドラメソッドが変更を認識し
[IndexerName("ElementItem")]
public byte this[int index] {
get { return ListElements[index].Value; }
set {
ListElements[index].Value = value;
FirePropertyChanged("ElementItem[]");
}
}
に元のコードを変更しようとしました[] ")しかしWPF要素はそうしませんでした。
WPFで動作させる方法はありますか?
私は、{Binding CurrentDevice.ElementItem [3]}へのXAMLバインディングの変更を成功させることさえ試みました。起動時に読み取られた最初の要素は成功しましたが、その後、要素は新しい値を表示しませんでした。
。 "*は、インデクサが直接インデクサをサポートしていないプログラミング言語で知られている名前を示します*"。ただそれを使用しないでください。読みやすさを向上させるのではなく、混乱を招くだけです。 MSDNのページでは、「* System.Runtime.CompilerServicesのクラスはコンパイラライターのみが使用する*」とも言われています。 – Clemens
'IndexerName'属性を適用した後でも' FirePropertyChanged( "Item []"); 'を残すことができます。 – Evk