2011-12-26 58 views
1

我正在開發一個在運行時創建時間線的應用程序。所以我創建了一個Grid(不是數據網格),我想在同等空間(60像素/小時 - 1像素/分鐘)中添加一些時間戳。將時間刻度添加到網格中的列

我已經知道如何編程創建列:

public void ColumnCreator(double totalInterval, double divPattern) 
{ 
    int divisionPattern = Convert.ToInt16(divPattern); 
    if (divisionPattern < totalInterval) 
    { 
     for (int i = 0; i < totalInterval; i += divisionPattern) 
     { 
      internalGrid.ColumnDefinitions.Add(new ColumnDefinition() { 
       Width = new GridLength(divisionPattern, GridUnitType.Pixel) }); 
     } 
    } 
} 

但這些行不同步。有人有我的解決方案嗎?提前8)

感謝

+0

你還沒有真正說明你的意思是「行不同步」?無論如何,我不會使用這種佈局的網格/列系統。嘗試一個畫布,在那裏你明確地放置線條。看到這篇文章的想法:http://www.codeproject.com/KB/WPF/WpfWinFormsBulletGraphs.aspx – ColinE 2011-12-26 20:02:50

+0

謝謝你回答我,我會考慮你的建議。謝謝! – 2011-12-26 20:06:20

回答

1

正如有人指出,特別是對於實時可視化可能Grid是你可以做的更壞的選擇。 Grid負責包含控件佈局管理,並對性能產生重大影響。

使用一個Canvas繪製它的東西。使用ShapePath進行繪製。爲了更好地實現實時的UI,你需要至少讀這個鏈接一個合理的性能:http://msdn.microsoft.com/en-us/library/ms747393.aspx

不要使用Pixels而是由WPF Units,這些設備的聲明在WPF的東西的尺寸獨立的方式提供。所以你的繪圖將在不同的顯示器screen sizesdpi上保持一定的比例。