重複する質問が出る前に、私は自分の問題の解決策を見つけられないように思えます。私がしたいのは、配列の要素をプロパティにバインドするだけで、私の経験が不足しているためにどのようになっているのか分かりません。ここでArrayの要素をxamlプロパティにバインドする
は、私のC#のコードがどのように見えるかです:
<Image Grid.Column="1" Name="WeatherIconZero" Source="{x:Bind PropertyName.WeatherIconSource[0], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" />
を私のコードが行き、エラーなしで実行されます。ここでは
public class MainPageImplement : INotifyPropertyChanged { BitmapImage[] weatherIconSource = new BitmapImage[7]; public BitmapImage[] WeatherIconSource { get { return weatherIconSource; } set { weatherIconSource = value; NotifyPropertyChanged("WeatherIconSource"); } } private void NotifyPropertyChanged(string propName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); } public event PropertyChangedEventHandler PropertyChanged; }
は私のXAMLプロパティがどのように見えるかです実際には何も結び付けていません。しかし、配列からの要素ではなく、BitmapImage変数を使用するとうまくいきます。
あなたはどのように設定している:あなたが
IndexOutOfRangeException
取得しないように、このようなあなたのコレクションをインスタンス化し、その後を'WeatherIconSource'プロパティ?個々のインデックスを個別に変更すると(つまり、WeatherIconSource [0] = myBitmap;)、UIへのプロパティの変更は通知されないためです。 'ObservableCollection'を使うだけで、あなたはたくさんの苦痛を救うことができます。配列はUIに変更を通知しません。 –
Laith
私は正しいプロパティを取得するためのメソッドの "シリーズ"を持っていると言うことができますか?これらのメソッドの中には、他のプロパティで共有されるものもあります。 UIを更新するために、これらの配列を更新するメソッドを呼び出すためのタイマーを設定しました。配列を更新するたびに、PropertyChangedを呼び出してUIを更新する 'set'があります。これは、配列を使用せず、各プロパティに一意のパスを与えるとき、完璧に機能します。しかし、配列を使用すると、コードの見栄えが向上し、何百行ものコードが保存されます。編集:私は、別のスレッドで実行される特定の時刻にUIを更新していることを追加する必要があります。 – Oybek
Ok、私の答えは以下の通りです。 – Laith