2013-11-20 115 views
0

我在WPF MVVM中製作遊戲。我正在全屏,並試圖爲每個控件定位每個控件(我有屬性的寬度,高度和邊距)。這是沒有問題的。WPF MVVM全屏應用程序分辨率合適

有沒有什麼辦法讓控件,頁面自動適合屏幕分辨率?

現在我正在做以下事情: 在視圖模型im計算係數(屏幕寬度/設計寬度),然後我乘以這個係數的每個寬度。我的身高也一樣。

是否可以將其放置在xaml中並使其適合每個屏幕分辨率?

回答

0

你正在努力工作。使用類似Grid的設置來設置您的佈局。

請看下面的例子:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="50"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Button Content="Hello, World" 
      Grid.Row="0" 
      Height="95"/> 
    <Button Content="Fixed Size" 
      Grid.Row="1" 
      Height="95" 
      VerticalAlignment="Top"/> 
    <Button Content="Expanded Size 1" 
      Grid.Row="2"/> 
    <Button Content="Expanded Size 2" 
      Grid.Row="3"/> 
</Grid> 

這是發生了什麼:

  1. 你行0則自動調整大小,無論你要麼1.指定爲控制或2,如果高度您不指定高度,它會自動調整大小以使內容顯示空間需要多少空間
  2. 您的第1行是固定大小,因此即使設置了Button的高度,該行也只會是50像素!由於VerticalAlignment設置,你會看到,右上角爲您的參考,「零」 Y像素的「第49次」(下)Y像素
  3. 見#4
  4. 由於電網具有兩個RowDefinition設置爲Height = *,這意味着它們將佔用其他控件繪製後剩餘的最大空間量。把它看作是補充。 * + * = 2*。這意味着每行將佔用Y方向剩餘空間的一半。您有:

    ... 
    <RowDefinition Height="*"/> 
    <RowDefinition Height="3*"/> 
    

    代替,這意味着(記得,* + 3 * = 4 *)與身高的行*將剩餘空間的1/4,具有高度3行*將佔用3 /剩餘空間的4個。

希望這會有所幫助。

+0

那麼,它可能適用於像主菜單這樣的靜態窗口,但是在約30個元素的遊戲窗口中,其中一些需要在遊戲中改變位置會給我帶來可怕的矩陣。另外我認爲管理層在這個矩陣中移動會有問題。 – user1736332

+0

我想,我只是回答如何使控件適合全屏幕分辨率的問題。我認爲你最好打賭它寫一個自定義的網格控件來處理你所有的尺寸。 – Kcvin

+0

也別忘了RowSpan和ColumnSpan。 – Kcvin