我已經使用了這一點,但似乎無法找到解釋爲什麼這不起作用的來源。索引列表項的屬性綁定
如果我有這段代碼:
public class FastData : INotifyPropertyChanged
{
private IList<FastDataVectors> fdvectors;
public IList<FastDataVectors> fdVectors {get { return fdvectors; } set { if (fdvectors == value) return; SetProperty(ref fdvectors, value); } }
private IList<float> fdfloat;
public IList<float> fdFloat {get { return fdfloat; } set { if (fdfloat == value) return; SetProperty(ref fdfloat, value); } }
...
}
public class FastDataVectors : INotifyPropertyChanged
{
private float fdvangle;
public float fdvAngle {get { return fdvangle; } set { if (fdvangle == value) return; SetProperty(ref fdvangle, value); } }
...
}
private FastData myfastdata;
public FastData myFastData {get { return myfastdata; } set { if (myfastdata == value) return; SetProperty(ref myfastdata, value); } }
private List<FastDataVectors> myfastdatavectors;
public List<FastDataVectors> myFastDataVectors {get { return myfastdatavectors; } set { if (myfastdatavectors == value) return; SetProperty(ref myfastdatavectors, value); } }
...
myFastData = new FastData();
myFastData.fdVectors = new List<FastDataVectors>();
myFastData.fdVectors.Add(new FastDataVectors() {fdvAngle = 10});
myFastData.fdVectors.Add(new FastDataVectors() {fdvAngle = 20});
myFastData.fdFloat.Add(10);
myFastData.fdFloat.Add(20);
,並在XAML這個文本塊
<TextBlock Text="{Binding myFastData.fdVectors[0].fdvAngle}"/>
<TextBlock Text="{Binding myFastData.fdVectors[1].fdvAngle}"/>
我希望它顯示「10 & 20」,但我只是得到一個結合錯誤,奇怪的是「......指定的參數超出了有效值的範圍」。
但是,如果我嘗試這一塊XAML的它完美的作品:
<TextBlock Text="{Binding myFastData.fdFloat[0]}"/>
<TextBlock Text="{Binding myFastData.fdFloat[1]}"/>
我真的不知道我在尋找和「WPF C#結合性的谷歌搜索的前幾頁索引數組列表「,不要返回任何可能解釋這一點的內容。
所以真正的問題是雙重的:
1)爲什麼不這項工作?
2)除了我如何解決這個問題外,是否有更好的方法來解決我想要做的事情?
注意:這是我剛剛編寫的一個簡化的代碼塊,可能包含錯誤和代碼省略的奇數位以說明。
編輯:我更新了代碼以更好地表示我實際上在做什麼。我也不能使用ObservableCollection,因爲我正在使用Telerik DataAccess工具,該工具將類關閉到SQLite數據庫。即使看着Telerik已經記錄的定製流暢集合方法,在我的場景中也是不可能的,因爲主要數據類在PCL中,這限制了我。
謝謝...
你是對的,代碼是不正確的。我現在更新了。我被迫使用IList,因爲它全部與Telerik DataAccess工具一起使用,後者返回到SQLite數據庫。我曾經廣泛使用的ObservableCollection全部被IList取代。現在我以更有條理的方式構建用戶界面,我遇到了這個問題。我的印象是,IList在東西改變時仍然給你通知觸發器。 – MikeyTT 2015-02-09 14:32:29
我認爲的原因是Float的List值在UI中得到更新而沒有任何問題 – MikeyTT 2015-02-09 14:35:00
我只能假設你在添加了浮動元素後以某種方式觸發綁定更新。設置myFastData的東西)。再次,只能猜測,因爲看不到真正的代碼。 – GazTheDestroyer 2015-02-09 14:38:09