2012-08-08 18 views
0

<ControlTemplate>ControlItemsControl繼承,我已經定義如下:這是XAML <Style>的一個壞例子嗎?

<Setter Property="ItemContainerStyle"> 
    <Setter.Value> 
     <Style> 
      <Setter Property="FrameworkElement.MinHeight" Value="16" /> 
      <Setter Property="FrameworkElement.Margin" Value="7,0,0,0" /> 
      <Setter Property="Button.MinWidth" Value="75" /> 
      <Setter Property="Button.MaxWidth" Value="120" /> 
      <Setter Property="Button.Height" Value="23" /> 
     </Style> 
    </Setter.Value> 
</Setter> 

我一直想知道這是否是一個很好的做法。請注意,有問題的控件應該只接受從FrameworkElement下降的對象。還要注意,我想避免編寫一個ItemContainerStyleSelector,並希望在XAML中這樣做。

回答

1

我覺得在樣式標籤本身上設置TargetType比使用它們的實際類型限定每個屬性更好。您的通用列表是否添加了多種類型的元素?如果是這樣,你需要考慮到所有這些制定者可能不適合不同類型的元素。

+0

我已經發現了。該列表可以採用任何「FrameworkElement」的後代。我已經完成了對模板的控制,並設計了一個面板 - 就像AFAIK一樣,不可能爲Grid創建模板。 – Minustar 2012-08-09 01:02:24

+1

@Minustar正確,網格需要繼承Control以擁有一個模板。只需很少的努力,您就可以創建一個自定義控件,其行爲類似於網格,但是繼承自Control。 – erodewald 2012-08-09 14:13:34