2012-06-02 50 views
0

我正在編寫一個簡單的益智遊戲程序 - 除了一個單元格都充滿了按鈕,您必須通過使用唯一的空單元格移動它們來正確地排序它們。第一個版本是一個3x3的網格,8個按鈕+一個隱形。但是,現在我想讓用戶更改行數和列數。我需要使用滑塊來操縱高度和寬度。不幸的是,我不知道如何在運行時操縱網格。以下是我目前的屏幕截圖:screenshot如何在運行時修改WPF中的Grid RowDefinitions和ColumnDefinitions?

回答

2

除非WPF是完全不同的Silverlight的,你就不能編程改變列/格定義?

(只是警告,在記事本寫這個,因爲我沒有與我的Visual Studio來檢查,所以我只是通過內存會)當我使用explicite值numRows行

myGrid.Columns.Clear(); 
myGrid.Rows.Clear(); 

int buttonNumber = 0; 
double buttonWidth = GridWidth/numberOfColumns; 
double buttonHeight = GridHeight/numberOfRows; 

for (int columnNumber = 0; columnNumber < numberOfColumns; columnNumber++) 
{ 
    var column = new ColumnDefinition(); 
    myGrid.Columns.Add(column); 

    for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++) 
    { 
     var row = new RowDefinition(); 
     myGrid.Rows.Add(row); 

     var button = new Button(); 
     button.Content = ++buttonNumber; 
     button.Width = buttonWidth; 
     button.Height = buttonHeight; 
     Grid.SetColumn(button, columnNumber); 
     Grid.SetRow(button, rowNumber); 
    } 
} 
+0

不幸的是,我認爲沒有這樣的方法作爲WPF中的Grid類中的Clear()或Add()。 – pmichna

+1

@vtvs在'Grid'類中,沒有。它位於'ColumnDefinitionCollection'和'RowDefinitionCollection'類,儘管這是我的:http://msdn.microsoft.com/en-us/library/system.windows.controls.columndefinitioncollection.clear.aspx –

1

我遇到了同樣的問題。我發現這個博客帖子中我的解決方案:

http://blog.rag.no/post/A-simpler-(and-dynamic)-Grid-control-for-WPF.aspx

可悲的是我不能發佈我的版本的DynamicGrid ...許可證布拉布拉的。

問候,傑拉德

+0

工作正常,爲numColumns。然而,我無法做出約束力的工作 - 我只是得到一個按鈕來填滿整個網格,就好像只有一個單元格一樣。什麼可能是錯的? – pmichna

+0

' ' ' – pmichna

相關問題