精华内容
下载资源
问答
  • 资源是指那些项目中可以C#代码分离的固定不变的信息。早在WPF出现之前windows应用程序就已经能够携带资源了。实际上就是把一些应用程序必须使用的资源与应用程序自身打包在一起,这样资源就不会意外丢失了,代价是...

    一、美化信息修改界面的TextBlock控件

    1.1.资源

    资源是指那些项目中可以和C#代码分离的固定不变的信息。早在WPF出现之前windows应用程序就已经能够携带资源了。实际上就是把一些应用程序必须使用的资源与应用程序自身打包在一起,这样资源就不会意外丢失了,代价是应用程序体积会变大。资源文件是指不能直接执行的文件。各种编程语言的编译器会把这些文件编译进目标文件(最终的.exe或.dll文件),资源文件在目标文件里以二进制数据的形式存在,形成目标文件的资源段。而在WPF中资源文件以哪种形式保存,则由其所在文件的“生成操作”属性来决定。

    1.资源形式
    在WPF项目中,既可以包含嵌入的资源(将资源文件嵌入到Resources.resx中),又可以包含链接的资源(将资源文件单独保存在项目中,而在扩展名为.resx的文件中只保存资源文件的连接)。

    展开全文
  • 样式属于资源的一种,例如为Button定义统一的背景颜色字体: <Window.Resources> <Style TargetType="Button"> <Setter Property="Background" Value="Yellow" /> </Style> </Window....

    1.WPF样式
    类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体:
    <Window.Resources>
    <Style TargetType="Button">
    <Setter Property="Background" Value="Yellow" />
    </Style>
    </Window.Resources>
    <StackPanel>
    <Button>Button A</Button>
    </StackPanel>
    在Style中定义的属性及值,影响到Window中的所有类型为Button的控件的样式
    这种样式,类似于CSS中的类型选择器,为某种类型定义样式。
    此外还可以在Style中加入x:Key属性,做为特定的样式(注意,这种也需要定义TargetType);
    在第一个样式的基础上创建一个新样式可以达到这一目的,如下所示:<Window.Resources>
    <Style x:Key="BigFontButtonStyle">
    <Setter Property="Control.FontFamily" Value="Times New Roman" />
    <Setter Property="Control.FontSize" Value="18" />
    <Setter Property="Control.FontWeight" Value="Bold" />
    </Style>
    <Style x:Key="EmphasizedBigFontButtonStyle" BasedOn="{StaticResource BigFontButtonStyle}">
    <Setter Property="Control.Foreground" Value="White" />
    <Setter Property="Control.Background" Value="DarkBlue" />
    </Style>
    </Window.Resources>
    以编程方式设置样式,若要以编程方式向元素分配命名样式,请从资源集合中获取该样式,然后将其分配给元素的 Style 属性。请注意,资源集合中的项是 Object
    类型,因此,将检索到的样式分配给 Style 属性之前,必须将该样式强制转换为 Style。例如,若要对名为 textblock1 的
    TextBlock 设置定义的 TitleText 样式,请执行以下操作:
    textblock1.style=(style)Resources["TitleText"];
    请注意,样式一旦应用,便会密封并且无法更改。如果要动态更改已应用的样式,必须创建一个新样式来替换现有样式。
    2.wpf模板
    当一个控件的外观不满足要求的时候,我们可以使用“控件模板”的方式更改控件的外观,WPF中的所有控件,只要有视觉外观,
    就会有Template
    property,且将此property的值设定为一个ControlTemplate对象。Button之所以看起来像Button就是因为受到了
    ControlTemplate对象的直接影响。ControlTemplate对象定义了控件的完整外观,且你可以替换此对象。

    抽象的FrameworkTemplate类型只定义了三个property。只读的Boolean
    property用来标识此模板是否可以被修改。Resources
    property的类型是ResourceDictionary,让我们定义一些只能够在模板内部使用的资源。第三个property最重要,叫做
    visualTree,定义组成此控件外观的Element的layout。
    ControlTemplate类型多加了两个property定义:TargetType用来指明,哪个类型的控件,适合应用到该模板;Triggers是Trigger对象的collection。

    所有派生自ContentControl的类型都使用ContentPresenter类型的对象来显示它们的内容。ContentPresenter派
    生自FrameworkElement,你可以在模板的视觉树内包含一个ContentPresenter对象,用来盛放模板中要放置的内容。
    ContentPresenter
    element负责显示所有“派生自ContentControl”控件的内容。ContentPresenter将这个世界分成两类对
    象:UIElement的后代和非UIElement的后代,对于非UIElement的后代,ContentPresenter会调用对象的
    ToString方法,用文本来展示该对象。这个功能让“派生自ContentControl”的控件可以用来显示任何种类的内容。
    <Window.Resources>
    <Style TargetType="Button" x:Key="ButtonStyle">
    <!--设置按钮的默认的样式-->
    <Setter Property="FontFamily" Value="Comic Sans MS"/>
    </Setter>
    <!--设置按钮的模板-->
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="Button">
    <Grid>
    <Ellipse Fill="{TemplateBinding Background}"/>
    <ContentPresenter
    Margin="5"
    HorizontalAlignment="Center"
    VerticalAlignment="Center"/>
    </Grid>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    </Window.Resources>
    <StackPanel>
    <Button Margin="5" Style="{StaticResource ButtonStyle}"
    Width="100" Height="100"
    Content="My Button">
    </Button>
    <Button Margin="5" Width="200">Common Button</Button>
    </StackPanel>。

    展开全文
  • wpf中的样式模板

    2017-11-16 20:54:00
    1.WPF样式类似于Web应用程序中...样式属于资源的一种,例如为Button定义统一的背景颜色字体:<Window.Resources><Style TargetType="Button"><Setter Property="Background" Value="Yellow" />&...

    1.WPF样式
    类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体:
     <Window.Resources>
     <Style  TargetType="Button">
     <Setter Property="Background" Value="Yellow" />
    </Style>
     </Window.Resources>
    <StackPanel>
     <Button>Button A</Button>
    </StackPanel>
    在Style中定义的属性及值,影响到Window中的所有类型为Button的控件的样式
    这种样式,类似于CSS中的类型选择器,为某种类型定义样式。
    此外还可以在Style中加入x:Key属性,做为特定的样式(注意,这种也需要定义TargetType);
    在第一个样式的基础上创建一个新样式可以达到这一目的,如下所示:<Window.Resources>
            <Style x:Key="BigFontButtonStyle">
                <Setter Property="Control.FontFamily" Value="Times New Roman" />
                <Setter Property="Control.FontSize" Value="18" />
                <Setter Property="Control.FontWeight" Value="Bold" />
            </Style>
            <Style x:Key="EmphasizedBigFontButtonStyle" BasedOn="{StaticResource BigFontButtonStyle}">
                <Setter Property="Control.Foreground" Value="White" />
                <Setter Property="Control.Background" Value="DarkBlue" />
            </Style>
    </Window.Resources>
    以编程方式设置样式
    若要以编程方式向元素分配命名样式,请从资源集合中获取该样式,然后将其分配给元素的 Style 属性。请注意,资源集合中的项是 Object 类型,因此,将检索到的样式分配给 Style 属性之前,必须将该样式强制转换为 Style。例如,若要对名为 textblock1 的 TextBlock 设置定义的 TitleText 样式,请执行以下操作:
    textblock1.style=(style)Resources["TitleText"];
    请注意,样式一旦应用,便会密封并且无法更改。如果要动态更改已应用的样式,必须创建一个新样式来替换现有样式。

    2.wpf模板
    当一个控件的外观不满足要求的时候,我们可以使用“控件模板”的方式更改控件的外观,WPF中的所有控件,只要有视觉外观,就会有Template property,且将此property的值设定为一个ControlTemplate对象。Button之所以看起来像Button就是因为受到了ControlTemplate对象的直接影响。ControlTemplate对象定义了控件的完整外观,且你可以替换此对象。
       抽象的FrameworkTemplate类型只定义了三个property。只读的Boolean property用来标识此模板是否可以被修改。Resources property的类型是ResourceDictionary,让我们定义一些只能够在模板内部使用的资源。第三个property最重要,叫做visualTree,定义组成此控件外观的Element的layout。
         ControlTemplate类型多加了两个property定义:TargetType用来指明,哪个类型的控件,适合应用到该模板;Triggers是Trigger对象的collection。
         所有派生自ContentControl的类型都使用ContentPresenter类型的对象来显示它们的内容。ContentPresenter派生自FrameworkElement,你可以在模板的视觉树内包含一个ContentPresenter对象,用来盛放模板中要放置的内容。ContentPresenter element负责显示所有“派生自ContentControl”控件的内容。ContentPresenter将这个世界分成两类对象:UIElement的后代和非UIElement的后代,对于非UIElement的后代,ContentPresenter会调用对象的ToString方法,用文本来展示该对象。这个功能让“派生自ContentControl”的控件可以用来显示任何种类的内容。
    <Window.Resources>  
      <Style TargetType="Button" x:Key="ButtonStyle">
     <!--设置按钮的默认的样式-->
     <Setter Property="FontFamily" Value="Comic Sans MS"/>
       </Setter>
     <!--设置按钮的模板-->
     <Setter Property="Template">
      <Setter.Value>
     <ControlTemplate TargetType="Button">
       <Grid>
      <Ellipse Fill="{TemplateBinding Background}"/>
     <ContentPresenter
        Margin="5"
      HorizontalAlignment="Center"
     VerticalAlignment="Center"/>
    </Grid>
    </ControlTemplate>
    </Setter.Value>
     </Setter>
     </Style>
     </Window.Resources>
     <StackPanel>
    <Button Margin="5" Style="{StaticResource ButtonStyle}" 
     Width="100" Height="100" 
      Content="My Button">
     </Button>
     <Button Margin="5" Width="200">Common Button</Button>
    </StackPanel>
    WPF包含数据模板和控件模板
    控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate。其实WPF的每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应。我们可以自定义一个模板来替换掉控件的默认模板以便打造个性化的控件。与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,但控件模板可以改变控件的内部结构(VisualTree,视觉树)来完成更为复杂的定制,比如我们可以定制这样的按钮:在它的左办部分显示一个小图标而它的右半部分显示文本。要替换控件的模板,我们只需要声明一个ControlTemplate对象,并对该ControlTemplate对象做相应的配置,然后将该ControlTemplate对象赋值给控件的Template属性就可以了。ControlTemplate包含两个重要的属性:1,VisualTree,该模板的视觉树,其实我们就是使用这个属性来描述控件的外观的2,Triggers,触发器列表,里面包含一些触发器Trigger,我们可以定制这个触发器列表来使控件对外界的刺激发生反应,比如鼠标经过时文本变成粗体等。参考以下代码
    <Button>       
     <Button.Template>
              <ControlTemplate>         
       <!--定义视觉树-->         
       <Grid>        
          <Ellipse Name="faceEllipse" Width="{TemplateBinding Button.Width}"
     Height="{TemplateBinding Control.Height}"  Fill="{TemplateBinding Button.Background}"/>    
              <TextBlock Name="txtBlock" Margin="{TemplateBinding Button.Padding}" VerticalAlignment="Center"  HorizontalAlignment="Center" 
     Text="{TemplateBinding Button.Content}" />   
             </Grid>         
       <!--定义视觉树_end-->    
             </ControlTemplate>
            </Button.Template>   
       </Button>
    在上面的代码中,我们修改了Button的Template属性,我们定义了一个ControlTemplate,在<ControlTemplate> ...</ControlTemplate>之间包含的是模板的视觉树,也就是如何显示控件的外观,我们这里使用了一个Ellipse(椭圆)和一个TextBlock(文本块)来定义控件的外观。很容易联想到一个问题:控件(Button)的一些属性,比如高度、宽度、文本等如何在新定义的外观中表现出来呢?我们使用TemplateBinding 将控件的属性与新外观中的元素的属性关联起来Width="{TemplateBinding Button.Width}" ,这样我们就使得椭圆的宽度与按钮的宽度绑定在一起而保持一致,同理我们使用Text="{TemplateBinding Button.Content}"将TextBlock的文本与按钮的Content属性绑定在一起。

    转载于:https://www.cnblogs.com/sjqq/p/7846379.html

    展开全文
  • WPF样式模板

    千次阅读 2019-06-08 16:05:30
    一、WPF样式(Style) 类似于Web应用程序中的CSS...样式属于资源的一种,例如为Button定义统一的背景颜色字体: <Window.Resources> <Style TargetType="Button"> <Setter Property="Backgroun...

    一、WPF样式(Style)
    类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体:

      <Window.Resources>
            <Style TargetType="Button">
                <Setter Property="Background" Value="Yellow" />
                <Setter Property="Margin" Value="5" />
                <Setter Property="FontFamily" Value="Comic Sans MS"/>
                <Setter Property="FontSize" Value="14"/>
            </Style>
        </Window.Resources>
        <StackPanel>
            <Button>Button A</Button>
            <Button Foreground="Red" Background="White">Button B</Button>
    </StackPanel>
    

    执行如下:
    在这里插入图片描述
    从执行的结果上来看:
    • 在Style中定义的属性及值,影响到Window中的所有类型为Button的控件的样式
    • 在Button中可以新定义其他属性(如Foreground),覆盖Style中的定义(Background)
    这种样式,类似于CSS中的类型选择器,为某种类型定义样式。
    此外还可以在Style中加入x:Key属性,做为特定的样式(注意,这种也需要定义TargetType);定义时还可以基于已定义的某种样式,例如,基于刚才的Button的样式,更改字体的大小及文本的前景及背景颜色:

     <Window.Resources>
            <Style TargetType="Button">
                <Setter Property="Background" Value="Yellow" />
                <Setter Property="Margin" Value="5" />
                <Setter Property="FontFamily" Value="Comic Sans MS"/>
                <Setter Property="FontSize" Value="14"/>
            </Style>
            <Style TargetType="Button" x:Key="ButtonStyleA" BasedOn="{StaticResource {x:Type Button}}">
                <Setter Property="Background" Value="Green" />
                <Setter Property="Foreground" Value="Yellow" />
                <Setter Property="FontSize" Value="28"/>
            </Style>
        </Window.Resources>
        <StackPanel>
            <Button>Button A</Button>
            <Button Foreground="Red" Background="White">Button B</Button>
            <Button Style="{StaticResource ButtonStyleA}">Button C</Button>
            <Button Style="{StaticResource ButtonStyleA}" Content="Button D">
                <Button.Foreground>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                        <LinearGradientBrush.GradientStops>
                            <GradientStop Offset="0.0" Color="#FFFFFF" />
                            <GradientStop Offset="1.0" Color="#0000FF" />
                        </LinearGradientBrush.GradientStops>
                    </LinearGradientBrush>
                </Button.Foreground>
            </Button>
    </StackPanel>
    

    执行如下:
    在这里插入图片描述
    二、控件模板(ControlTemplate)
    当使用一个控件时,如果控件的属性、方法、事件满足程序的需求,但控件的外观不满足要求的时候,除了自定义控件这种方法外,我们还可以通过使用“控件模板”的方式更改控件的外观。例如定义一个圆形的按钮:
    二、控件模板(ControlTemplate)
    当使用一个控件时,如果控件的属性、方法、事件满足程序的需求,但控件的外观不满足要求的时候,除了自定义控件这种方法外,我们还可以通过使用“控件模板”的方式更改控件的外观。例如定义一个圆形的按钮:

    <Window.Resources>
              <Style TargetType="Button" x:Key="ButtonStyle">
                <!--设置按钮的默认的样式-->
                <Setter Property="FontFamily" Value="Comic Sans MS"/>
                <Setter Property="FontSize" Value="14"/>
                <Setter Property="Foreground" Value="Black" />
                <Setter Property="Background">
                    <Setter.Value>
                        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                            <LinearGradientBrush.GradientStops>
                                <GradientStop Offset="0.0" Color="#fff" />
                                <GradientStop Offset="1.0" Color="#009" />
                            </LinearGradientBrush.GradientStops>
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
                <!--设置按钮的模板-->
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Grid>
                                <Ellipse Fill="{TemplateBinding Background}"/>
                                <ContentPresenter
                                   Margin="5"
                                   HorizontalAlignment="Center"
                                   VerticalAlignment="Center"/>
                            </Grid>
                     第28行:</ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
        <StackPanel>
            <Button Margin="5" Style="{StaticResource ButtonStyle}" 
                  Width="100" Height="100" 
                   Content="My Button">
            </Button>
            <Button Margin="5" Width="200">Common Button</Button>
    </StackPanel>
    

    执行如下:
    在这里插入图片描述
    三、触发器(Trigger)
    值得注意的是,这个时候,对于此按钮,无论是否获得焦点、鼠标是处于其上方,显示的外观均是相同的,如果要定义以上的一些效果,可以使用触发器来实现。
    Style、ControlTemplate 和 DataTemplate 都具有 Triggers 属性,该属性可以包含一组触发器。某个属性值更改时,或某个事件引发时,触发器会相应地设置属性或启动操作(如动画操作)。
    触发器包含以下几种:
    • 属性触发器
    • EventTrigger 和 Storyboard
    • MultiTrigger、DataTrigger 和 MultiDataTrigger
    我们这里可以使用属性触发器来实现:
    例如,在ControlTemplate中(即上段代码28行前插入以下代码):

    <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
                <!--鼠标在上移动时-->
                <Setter Property="Foreground" Value="Yellow" />
            </Trigger>
            <Trigger Property="IsKeyboardFocused" Value="True">
                <!--控件获得键盘焦点时-->
                <Setter Property="Foreground" Value="White" />
            </Trigger>
    </ControlTemplate.Triggers>
    

    当按键获得键盘焦点时:
    在这里插入图片描述
    鼠标在其上时:
    在这里插入图片描述

    展开全文
  • WPF中的模板和样式

    2012-02-07 17:37:00
    样式属于资源的一种,例如为Button定义统一的背景颜色字体: 1: <Window.Resources> 2: <Style 3: TargetType="Button"> 4: <Setter Property="Background" Value="Yellow"...
  • WPF笔记(1.9 样式和控件模板)——Hello,WPF! 原文:WPF笔记(1.9 样式和控件模板)——Hello,WPF资源的另一个用途是样式设置: <Window><Window.Resources><Stylex:Key="myStyle...
  • 资源中包括了.NET Framework 3.5、4.0、4.5 及 Silverlight 的控件样式。主要是包含在PresentationFramework程序及中的 xaml 文件,其中包括了最新的 Windows8 的主题样式 aero2.normalcolor.xaml,文件列表预览 ...
  • WPF样式和行为

    千次阅读 2013-06-15 14:50:32
    样式基础 样式是一种重要的资源样式是属性值的集合,能被应用到一个元素。WPF样式可以设置任何依赖属性。 WPF样式也支持触发器。当另一个属性被改变时,触发器改变一个控件的样式样式能使用模板重定义控件的...
  • WPF资源

    2019-09-23 19:17:50
    WPF资源通常用作“样式”(Style)、样式模板、数据模版等。2、自用可以定义及XAML中引用 应用程序级资源:定义在App.xaml文件中,作为整个应用程序共享的资源存在 3、XAML解析资源的顺序 在XAML中解析资源...
  • 一、WPF样式 类似于Web应用程序中的CSS,在WPF中可以为...样式属于资源的一种,例如为Button定义统一的背景颜色字体: 1: <Window.Resources> 2: <Style 3: TargetType="Button"> 4: ...
  • 一、WPF样式 类似于Web应用程序中的CSS,在WPF中可以为...样式属于资源的一种,例如为Button定义统一的背景颜色字体: 1: <Window.Resources> 2: <Style 3: TargetType="Button"> 4: ...
  • WPF ControlTemplate模板

    2019-07-17 21:51:48
    WPF包含数据模板和控件模板,ControlTemplate是控件模板常见的,WPF的每一个控件都有一个默认的模板,该模板描述了控件的外观以及外观对外界刺激所做出的反应。我们可以自定义一个模板来替换掉控件的默认模板以便...
  • WPF基础教程(样式).pptx

    2020-05-25 20:33:40
    详细介绍了WPF样式资源、触发器等,适合新手学习,而样式则是组织重用以上的重要工具。不是使用重复的标记填充XAML, 通过Styles创建一系列封装所有这些细节的样式。然后通过Style属性应用封装好的样式。这点类似...
  • WPF Resource资源

    千次阅读 2015-04-10 06:25:52
    比如后面的章节我们会讲到模板、程序样式和主题就经常放在对象资源里面。这样一来,在WPF程序中数据就分为4个等级存储了:数据库里的数据相当于存放在仓库里面,资源文件里的数据就相当于放进了旅行箱里,WPF对象...
  • Developer Express 中的 WPF中的样式和模板是以资源的形式存在于 DevExpress.Wpf.Core.v9.1.dll中的,在程序中引用这些样式可以迅速的改善界面的外观。 可以在资源字典中如下引入 <ResourceDictionary....
  • 书中只给了模板的标签节点,和样式及样式引用模板的详细代码(是针对Button控件的)。我将这些代码引入窗口资源MainWindow.Resources中,然后在Grid中添加了一个Button,引用了其中一个样式(两个样式套用一个模板)...
  • 10 WPF资源

    2013-06-08 15:52:00
    诸如:刷子,样式,或模板对象。因此,你能更容易地重用他们。 尽管能用代码创造操纵资源,通常用XAML标记。一个资源被定义以后,你能使用它,在窗口中,标记的剩余部分(或,在一个应用资源的情况下,遍及你的应用...
  • WPF中常用控件都有一个默认的自定义样式,在Visual Studio中不能直接查看,但是在 Blend for Visual Studio 中可以通过模板来查看。 首先新建 一个wpf项目 然后点击资源把需要的控件拖出来,也可以手写 如下图所示...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 180
精华内容 72
关键字:

wpf资源和样式模板