我有一個ScrollViewer
,其中包含一個Grid
圖像。我不確定使用網格是否是正確的選擇。這裏是什麼,我希望它看起來像一個樣機圖片:在ScrollViewer中用於動態網格圖像的佈局
紅色方框表示ScrollViewer
。裏面是一些佈局容器的類型(Grid
此刻)有兩行圖像(綠色正方形),但動態數量的列可以在運行時更改,可以滾動到。另一個條件是我想調整它們的大小,以便6張圖片(只有6張!)始終可見。
所以在XAML:
<ScrollViewer Name="scrollViewer1">
<Grid Name="grid1"></Grid>
</ScrollViewer>
然後用C#我想我需要動態地添加列。然後收聽scrollViewer1
的SizeChanged
事件我需要動態計算行和列的大小,以便始終可以看到3個圖像。例如:
ColumnDefinition gridColN = new ColumnDefinition();
grid1.ColumnDefinitions.Add(gridColN);
問題1:動態添加更多的列,使細胞保持越來越小和ScrollViewer
內從未滾動,直到有10+列格。
預期結果:最終結果應該是一個水平的圖像流,一次可見6個,當outter容器或窗口調整大小時將調整大小。我試圖動態調整它們的寬度,但將它們設置爲容器寬度的1/3不起作用。
問題:這是正確的方法嗎?我應該在ScrollViewer
內使用Grid
嗎?我是否必須手動計算尺寸或有沒有辦法讓他們填充容器?
是唯一的途徑調整列的大小,以便他們e總是ViewPortWidth的1/3,是循環遍歷所有的列定義? –
我提供的解決方案不會執行任何循環。它只是根據定義的列和行的數量重新調整網格的大小,以便在視圖中保留6個單元格。添加新的列/行或滾動查看器更改大小時會發生重新調整大小。我在你的問題中遺漏了什麼? – dtesenair
我得到它的工作(我手動設置每列的寬度),雖然它非常滯後(可能是它自己的問題)。 –