峰顶飞龙 发表于 2013-1-3 15:38:21

WPF之模板样式

<div id="cnblogs_post_body">      以前学WPF时弄的个自定义窗体,关于截断系统消息的一部分代码来源于网上。
      源文件在这里。
      http://pic002.cnblogs.com/images/2012/274719/2012112621335664.jpg
      说起来也容易,整个窗体就是个border,渲染下,然后在上面加层DockPanel,放那些标题和按钮。
      下面是自定义窗体的样式,将XAML分开,这样方便看。
       窗体部分:
<div class="cnblogs_code" >http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifView Code <div id="cnblogs_code_open_d3f78c26-4ff1-4e05-ab26-081152569672" class="cnblogs_code_hide">    <Style x:Key="WindowStyle" TargetType="Window">      <Setter Property="AllowsTransparency" Value="True"/>      <Setter Property="Background" Value="Transparent"/>      <Setter Property="WindowStyle" Value="None"/>      <Setter Property="Template">            <Setter.Value>                <ControlTemplate x:Name="WindowTemplate" TargetType="Window">                  <!--若不设置margin,阴影无法显示(被挡住了)-->                  <Border x:Name="FussWindowBorder" CornerRadius="5" Margin="8" Background="White" BorderBrush="#6A6A6A" BorderThickness="1" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">                        <Border.Effect>                            <DropShadowEffect BlurRadius="8" ShadowDepth="0" Color="#00000000"/>                        </Border.Effect>                        <Grid>                            <Grid.RowDefinitions>                              <RowDefinition Height="Auto"/>                              <RowDefinition Height="*"/>                            </Grid.RowDefinitions>                            <Border Name="TitleBar" Height="50" CornerRadius="5">                              <Border.Background>                                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">                                        <GradientStop Color="#FF2161D6" Offset="0.02"/>                                        <GradientStop Color="#00FFFFFF" Offset="1"/>                                    </LinearGradientBrush>                              </Border.Background>                              <DockPanel Margin="0">                                    <TextBlock DockPanel.Dock="Left" Name="TitleText" VerticalAlignment="Top" Margin="10 5 0 0"FontSize="16" FontWeight="Bold" Foreground="#FF101010"/>                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" DockPanel.Dock="Right" Height="25" VerticalAlignment="Top">                                        <Rectangle Style="{DynamicResource Splitter}"/>                                        <Button Name="MiniButton" Width="30" Template="{DynamicResource MiniButton}"/>                                        <Rectangle Style="{DynamicResource Splitter}"/>                                        <Button Name="MaxButton" Width="30" Style="{DynamicResource WinNormalButton}"/>                                        <Rectangle Name="MaxSplitter"Style="{DynamicResource Splitter}"/>                                        <Button Name="CloseButton" Width="35" Style="{DynamicResource CloseButton}"/>                                    </StackPanel>                              </DockPanel>                            </Border>                            <AdornerDecorator Grid.Row="1" Height="Auto" Width="Auto">                              <ContentPresenter/>                            </AdornerDecorator>                        </Grid>                  </Border>                </ControlTemplate>            </Setter.Value>      </Setter>    </Style>
页: [1]
查看完整版本: WPF之模板样式