2009-08-29 84 views
2

我試圖做這樣的事情......是否可以在WPF中爲2x2網格創建樣式?

<Style 
    x:Key="TwoByTwoGridStyle" 
    TargetType="Grid"> 
    <Setter 
     Property="Grid.RowDefinitions"> 
     <Setter.Value> 
      <ControlTemplate> 
       <RowDefinition 
        Height="*" /> 
       <RowDefinition 
        Height="Auto" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter 
     Property="Grid.ColumnDefinitions"> 
     <Setter.Value> 
      <ControlTemplate> 
       <ColumnDefinition 
        Width="*" /> 
       <ColumnDefinition 
        Width="Auto" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

ControlTemplate是不對的。我收到錯誤:「屬性VisualTree不支持類型RowDefinition的值」。是否有某種方式來表示行/列定義的集合?或者,是否有其他方式爲2x2網格創建樣式/模板?

謝謝。

回答

0

我很確定現在答案是:「無法完成」。如果我錯了,請糾正我。

0

RowDefinitions屬性不屬於ControlTemplate類型,因此將它分配給ControlTemplate是沒有意義的。你應該分配一個RowDefinitionCollection來代替:

<Style 
    x:Key="TwoByTwoGridStyle" 
    TargetType="Grid"> 
    <Setter 
     Property="Grid.RowDefinitions" 
     <Setter.Value> 
      <RowDefinitionCollection> 
       <RowDefinition 
        Height="*" /> 
       <RowDefinition 
        Height="Auto" /> 
      </RowDefinitionCollection> 
     </Setter.Value> 
    </Setter> 
    <Setter 
     Property="Grid.ColumnDefinitions" 
     <Setter.Value> 
      <ColumnDefinitionCollection> 
       <ColumnDefinition 
        Width="*" /> 
       <ColumnDefinition 
        Width="Auto" /> 
      </ColumnDefinitionCollection> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

感謝您的答案,但它不起作用。我得到這個錯誤:「Type'RowDefinitionCollection'不能用作對象元素,因爲它不是公有的,或者沒有定義一個公共無參數構造函數或類型轉換器。」 – devuxer 2009-08-29 00:13:32

+0

好的......也許這是不可能的 – 2009-08-29 09:13:44

相關問題