중복 질문을하기 전에 문제에 대한 해결책을 찾을 수 없다고 말하고 싶습니다. 내가하고 싶은 것은 배열의 원소를 속성에 묶는 것이고 나의 경험이 부족하기 때문에 어떻게 알아낼 수없는 것입니다. 여기Array 요소를 xaml 속성에 바인딩
내 C# 코드는 모습입니다 :
여기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 속성을 보이는 방법 :
내 코드 갈 오류없이 실행<Image Grid.Column="1" Name="WeatherIconZero" Source="{x:Bind PropertyName.WeatherIconSource[0], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" />
떨어져 있지만 실제로 아무것도 바인딩하지 않습니다. 그러나 배열의 요소가 아니라 BitmapImage 변수를 사용하면 올바르게 작동합니다.
'WeatherIconSource' 속성? 각 색인을 개별적으로 수정하면 (예 :'WeatherIconSource [0] = myBitmap;'), UI의 속성 변경을 알리지 않기 때문입니다. 'ObservableCollection'을 사용하면 많은 고통을 덜 수 있습니다. 배열은 UI에 변경 사항을 전달하지 않습니다. –
Laith
올바른 속성을 얻을 수있는 일련의 메서드가 있다고 말할 수 있습니까? 이러한 메소드 중 일부는 다른 속성에서도 공유됩니다. UI를 업데이트하기 위해 이러한 배열을 업데이트하는 메서드를 호출하는 타이머를 설정했습니다. 배열을 업데이트 할 때마다 PropertyChanged를 호출하여 UI를 업데이트하는 'set'이 있습니다. 이것은 배열을 사용하지 않고 각 속성에 고유 한 경로를 부여 할 때 완벽하게 작동합니다. 그러나 배열을 사용하면 코드가 더 멋지게 보이고 수백 줄의 코드가 저장됩니다. 편집 : 다른 스레드에서 실행되는 특정 시간에 UI 업데이트 오전 추가해야합니다. – Oybek
좋아, 내 대답은 아래 :) – Laith