2012-04-13 24 views
7

कोई (शायद ब्लेंड का उपयोग कर सकता है) मुझे WPF विस्तारक के लिए एक डिफ़ॉल्ट डिफ़ॉल्ट नियंत्रण टेम्पलेट प्रदान कर सकता है? मैं कुछ मामूली संशोधन करना चाहता हूं लेकिन ऐसा लगता है कि मुझे वैध टेम्पलेट के लिए कोई स्रोत नहीं मिल रहा है।विस्तारक के लिए डिफ़ॉल्ट नियंत्रण टेम्पलेट

अग्रिम धन्यवाद।

+0

यहाँ माइक्रोसॉफ्ट दस्तावेज में ताजा सरकारी उदाहरण के लिए एक लिंक है, लेकिन यह अलग है डिफ़ॉल्ट सिस्टम शैली से काफ़ी: https://docs.microsoft.com/en-us/dotnet/ढांचे/wpf/नियंत्रण/विस्तारक-शैली-और-टेम्पलेट्स – SwissCoder

उत्तर

14

मेरे पास मिश्रण है, और आपकी मदद कर सकता है। यहां मेरे लिए ब्लेंड उत्पन्न हुआ है।

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ToggleButton}"> 
       <Border Padding="{TemplateBinding Padding}"> 
        <Grid Background="Transparent" SnapsToDevicePixels="False"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="19"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 
         <Grid> 
          <Grid.LayoutTransform> 
           <TransformGroup> 
            <TransformGroup.Children> 
             <TransformCollection> 
              <RotateTransform Angle="-90"/> 
             </TransformCollection> 
            </TransformGroup.Children> 
           </TransformGroup> 
          </Grid.LayoutTransform> 
          <Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> 
          <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> 
         </Grid> 
         <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="true"> 
         <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#222"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> 
         <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ToggleButton}"> 
       <Border Padding="{TemplateBinding Padding}"> 
        <Grid Background="Transparent" SnapsToDevicePixels="False"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="19"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid> 
          <Grid.LayoutTransform> 
           <TransformGroup> 
            <TransformGroup.Children> 
             <TransformCollection> 
              <RotateTransform Angle="180"/> 
             </TransformCollection> 
            </TransformGroup.Children> 
           </TransformGroup> 
          </Grid.LayoutTransform> 
          <Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> 
          <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> 
         </Grid> 
         <ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="true"> 
         <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#222"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> 
         <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ToggleButton}"> 
       <Border Padding="{TemplateBinding Padding}"> 
        <Grid Background="Transparent" SnapsToDevicePixels="False"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="19"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 
         <Grid> 
          <Grid.LayoutTransform> 
           <TransformGroup> 
            <TransformGroup.Children> 
             <TransformCollection> 
              <RotateTransform Angle="90"/> 
             </TransformCollection> 
            </TransformGroup.Children> 
           </TransformGroup> 
          </Grid.LayoutTransform> 
          <Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> 
          <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> 
         </Grid> 
         <ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="true"> 
         <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#222"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> 
         <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="ExpanderHeaderFocusVisual"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Border> 
        <Rectangle Margin="0" SnapsToDevicePixels="true" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ToggleButton}"> 
       <Border Padding="{TemplateBinding Padding}"> 
        <Grid Background="Transparent" SnapsToDevicePixels="False"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="19"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> 
         <Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> 
         <ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="true"> 
         <Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#222"/> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> 
         <Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<Style x:Key="ExpanderStyle1" TargetType="{x:Type Expander}"> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Expander}"> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> 
        <DockPanel> 
         <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FocusVisualStyle="{StaticResource ExpanderHeaderFocusVisual}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ExpanderDownHeaderStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </DockPanel> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsExpanded" Value="true"> 
         <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/> 
        </Trigger> 
        <Trigger Property="ExpandDirection" Value="Right"> 
         <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right"/> 
         <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left"/> 
         <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}"/> 
        </Trigger> 
        <Trigger Property="ExpandDirection" Value="Up"> 
         <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top"/> 
         <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom"/> 
         <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}"/> 
        </Trigger> 
        <Trigger Property="ExpandDirection" Value="Left"> 
         <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left"/> 
         <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right"/> 
         <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
<!-- Resource dictionary entries should be defined here. --> 

+0

ग्रेट धन्यवाद। क्या आपको पता है कि यह नेट 3.5 या 4 का विस्तारक है? मैंने सुना है कि वे अलग हैं। –

+0

मेरा प्रोजेक्ट .NET 4 पर सेट किया गया था। – Rhyous

+1

मैंने एक .NET 3.5 प्रोजेक्ट बनाया और ब्लेंड के साथ एक ही शैली उत्पन्न की, और फिर BeyondCompare के साथ तुलना की और वे समान थे। – Rhyous