簡體   English   中英

在Silverlight中可以綁定一個屬性有多少次限制?

[英]Is there a limit to how many times a property can be bound to in Silverlight?

我有一個場景,需要在網格中顯示一堆數據,但是它以如此復雜的方式使用列組和行組,因此我們無法使用datagrid。 我們所擁有的是A,B和C行中的節組,垂直列組為c1和c2。 並且可能會顯示此控件的2個版本。

最多可以有5個A。每個A最多可以有5個B,每個B具有8個C,每個C在c1中具有5個屬性,在c2中具有5個屬性。

這些B的每一個打印出C的標簽,然后打印出c1的該標簽的所有值,然后打印c2下該標簽的所有屬性。

每個C都可以通過網格外部的不確定復選框隱藏,顯示或突出顯示。

我遇到的問題是在第5個A周圍,它下面的所有C都開始失去與復選框的綁定(通過相對綁定綁定)。

一個屬性可以綁定多少次以使其僅停止評估綁定是否有限制? 每個C都有自己的復選框,並且它們都在同一時間發出。 事情全都是ItemsControl,所以它在最后一次迭代中-從完成的前4次開始就沒有任何變化,這只是控件的第5次迭代。

如果我刪除其中一個C,從而減少了處理工作,那么問題就會消失。 如果添加另一個,則問題較早發生。

我已經繪制了一張快速圖像,以顯示我在這里談論的內容: 在此處輸入圖片說明 請注意,任何C都可以突出顯示或隱藏。 但是,在特定點之后,問題是突出顯示和隱藏只是停止了。 沒有錯誤,異常,輸出窗口中沒有任何內容。 綁定只是停止評估。


更新

似乎有一個限制。 如果我使用以下xaml進行測試:

        <ItemsControl ItemsSource="{Binding TestCollection}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Index}" Visibility="{Binding DataContext.TestVisibility, RelativeSource={RelativeSource AncestorType=navigation:Page}}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

並在我的視圖模型中像這樣填充它:

        List<TestModelObject> initList = new List<TestModelObject>();
        for (int i = 0; i < 15000; i++)
        {
            initList.Add(new TestModelObject(i));
        }

        TestCollection = new ObservableCollection<TestModelObject>(initList);

並在我的ViewModel中將TestVisibility設置為false。 自從一次將15K項添加到UI以來,運行並讓其進行處理之后,我會花一會兒才能得到列表,如果我的ItemsControl中的整數從9640左右開始。但是,如果重新加載,每次都會得到一個略有不同的數字。 它基於執行時間嗎?

我在Silverlight 5和Silverlight 4中都對此進行了測試。對於Silverlight 4,我當然對RelativeBinding使用了一種解決方法,但結果是相同的。

據我所知,沒有而且不應該是有約束力的限制。

如果我猜到了,我會說您在C上覆蓋Equals或GetHashCode。 (或者因為您在同一個容器中多次使用同一個C實例,所以不清楚是否這樣做)。 當多個項目彼此相等時,或者相等的項目不相等時,應該發生或類似的事情會發生,選擇時會發生一些非常奇怪的事情,就像您上面所描述的那樣。 確保每個C實例將產生唯一的相等性和/或哈希碼值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM