2012-03-28 17 views
1

まだWPFを学んでいます....ありがとうございました。ListView DataTemplate、ControlTemplate、Style

<ListBox Name="lbEvents" Style="{StaticResource MyFinalListBox}" 
       VerticalAlignment="Stretch" 
       SelectionMode="Multiple" 
       Loaded="lbCenterEvents_Loaded" 
       HorizontalAlignment="Stretch" 
       BorderBrush="Transparent" 
       Background="Transparent" /> 

だけのアイデアを取得しようとしている...私は、正確な必要はありません。このような何かに

<ListBox Name="lbEvents" 
       VerticalAlignment="Stretch" 
       SelectionMode="Multiple" 
       Loaded="lbCenterEvents_Loaded" 
       HorizontalAlignment="Stretch" 
       BorderBrush="Transparent" 
       Background="Transparent" 
       SelectionChanged="lbCenterEvents_SelectionChanged" 
       ItemContainerStyle="{StaticResource KioskCheckboxListItemContainer}"> 
      <ListBox.Resources> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" /> 
       <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> 
      </ListBox.Resources> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox Grid.Column="0" 
         Margin="0,10,0,0" 
         Padding="5,30,5,10" 
         DockPanel.Dock="Top" 
         Style="{StaticResource KioskCheckBox}" 
         Background="{StaticResource brshSecondaryColor}" 
         FontSize="26" 
         HorizontalAlignment="Stretch" 
         IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" 
         Content="{Binding DisplayDescriptionForKiosk}"> 
        </CheckBox> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

これをリファクタリングする方法はありますコード、擬似コードは十分なはずです(私は願っています)、事前に感謝します。

編集:私はStaticResourcesへの参照の量を最小限に抑えてこれを行う方法を見つけようとしているので、これを求めています。私はテンプレートとスタイルを引き出すことができることを理解していますが、1つのStaticResourceにどのように縮小するかを示すことができれば幸いです。 >でApp.xaml:

+0

(何かのように)したいです – Paparazzi

答えて

0

はい、あなたはすべてのListBoxsスタイルのTargetType = "{タイプのListViewItem X}" を使うにしたいスタイルの場合

<UserControl> 
    <UserControl.Resources> 
     <DataTemplate x:Key="MyItemTemplate" DataType="{x:Type MyDataType}"> 
      <CheckBox Grid.Column="0" 
       Margin="0,10,0,0" 
       Padding="5,30,5,10" 
       DockPanel.Dock="Top" 
       Style="{StaticResource KioskCheckBox}" 
       Background="{StaticResource brshSecondaryColor}" 
       FontSize="26" 
       HorizontalAlignment="Stretch" 
       IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" 
       Content="{Binding DisplayDescriptionForKiosk}"> 
      </CheckBox> 
     </DataTemplate> 
     <Style x:Key="MyFinalListBox" TargetType="{x:Type ListBox}"> 
      <Setter Property="SelectionMode" Value="Multiple" /> 
      ... put more properties here 
     </Style> 
    </UserControl.Resources> 
</UserControl> 

<ListBox Name="lbEvents" 
     ItemTemplate="{StaticResource MyItemTemplate}" 
     Style="{StaticResource MyFinalListBox}" 
     VerticalAlignment="Stretch" 
     Loaded="lbCenterEvents_Loaded" 
     HorizontalAlignment="Stretch" 
     BorderBrush="Transparent" 
     Background="Transparent" /> 
関連する問題