2010-03-10 113 views
1

請查看附件截圖。RowDetailsTemplate不自動返回 - Silverlight DataGrid

我將數據網格添加到模板中每行的rowdetails區域。

現在的問題是,rowdetails區域大小正確,當它變大時,即當更多的內容被添加。

但是,一旦您摺疊這些行(及其相應的rowdetails)並打開另一個小於第一個rowdetail的rowdetail,rowdetails容器就不會調整大小(即較小)以適合較小的內容。

請參考下面的Flickr相片集,因爲我不能發表圖片或多個超鏈接:http://www.flickr.com/photos/[email protected]/sets/72157623590404492/

我該如何解決這個問題?

問候 Renier

+0

當你說「小」,你的意思是短或窄? – Gabe 2010-03-10 06:33:19

+0

如果您發佈數據網格的XAML以及您使用的Silverlight版本,這將有所幫助。 – Gabe 2010-03-10 06:33:52

+0

當我說小一點時我的意思是較矮,對不起。 我正在使用Silverlight 3.使用已填充服務器端並通過wcf調用傳遞的自定義類以編程方式添加datagrid。 我擁有的唯一的xaml是用於RowDetailsTemplate的數據模板。請在下面的評論中找到它。 – Renier 2010-03-10 06:41:54

回答

0

我知道,這個問題是非常老了,但我只是碰到它絆倒之前曾遇到過這個問題了。它與其他問題有關,如http://forums.silverlight.net/p/96989/279885.aspx

基本上,根是DataGrid控件想要避免其行的大小抖動。由於在關閉元素時進行虛擬化(假定水平滾動),元素不再呈現。因此,如果Silverlight試圖確定行的最大部分偏離一側(並因此虛擬化),那麼它無法真正知道該行的高度而不顯示所有的屏幕外內容。因此,在這種情況下,他們做出了妥協,如果當前高度大於屏幕上當前的所有元素,他們將使用屏幕上元素的高度或行的當前高度。這會導致您正在描述的行爲。

有幾個解決方法,上面的鏈接中描述的是關閉DataGrid上的虛擬化,但是如果DataGrid中存在不平常數量的數據,這可能會對性能產生影響。我使用的另一個是將DataGrid行高設置爲0,強制重新渲染,然後將行高設置回其默認或自動。這樣我就可以強制行縮小。

希望能幫助某個人解決這個問題。

1

我搜索了關於這個問題的網絡,並發現只有非常複雜的解決方法(如這裏)。

但其實很容易解決這個問題:

<sdk:DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <ContentControl **VerticalAlignment="Top"** 
... 

- >如果DataTemplate的內部控制具有「頂部」的verticalalignment(相對於默認的「拉伸」)的行收縮如預期。

問候 約翰內斯

相關問題