![](/img/trans.png)
[英]GridSplitter with a fixed panel (grid column) when grid (usercontrol/window) size changes
[英]When a usercontrol layout gets updated, dynamic rows in fixed grid are squished
我在xaml中有一個網格:
我動態創建許多行:
for (int i = 1; i <= numHorizLines - 1; i++)
{
RowDefinition r = new RowDefinition();
r.Height = new GridLength(Convert.ToDouble(size), GridUnitType.Star);
gVertNums.RowDefinitions.Add(r);
}
當usercontrol的layout_updated事件觸發時,我執行循環以根據控件的高度重新創建行數(清除gVertNums網格中的所有內容之后)。 然后將文本塊添加到網格行中,並在其中添加數字(為簡單起見,省略了代碼)。
當第一次打開主窗口時,這很好地工作。 但是,當再次觸發layout_updated事件時,gVertNums將顯示正確的行數,但將被壓縮。
網格高度似乎正在發生變化,從而導致行被壓縮。 即使我將gVertNums.height重置為新布局的高度,行還是被弄臟了...
這是打開的主窗口的屏幕截圖:
這是調整用戶控件大小時的屏幕截圖:
在此示例中,更改了網格寬度,但未更改高度,並且行仍被擠壓在一起。 間距為“大小”(25像素)。
任何想法為什么會這樣?
您目前沒有(顯示)清除RowDefinitions
代碼。 因此,在再次添加它們之后,您現在的行數可能會比預期的多一倍。
嘗試這個
gVertNums.RowDefinitions.Clear();
for (int i = 1; i <= numHorizLines - 1; i++)
{
RowDefinition r = new RowDefinition();
r.Height = new GridLength(Convert.ToDouble(size), GridUnitType.Star);
gVertNums.RowDefinitions.Add(r);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.