首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

线条样式的TargetType在UWP中不起作用

在UWP中,TargetType属性用于指定样式应用的目标类型。然而,对于线条样式(StrokeStyle)来说,TargetType属性在UWP中不起作用。线条样式是指在绘制图形或路径时,定义线条的样式,如线宽、线段样式等。

在UWP中,要应用线条样式,可以通过以下步骤实现:

  1. 创建一个自定义控件或使用现有的控件。
  2. 在控件的样式中,使用Setter元素设置控件的Stroke属性为所需的线条样式。
  3. 在控件的样式中,使用Setter元素设置控件的StrokeThickness属性为所需的线条宽度。

例如,以下是一个自定义Button控件的样式,应用了一种虚线样式的线条:

代码语言:txt
复制
<Style TargetType="Button">
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}"/>
    <Setter Property="BorderBrush" Value="{ThemeResource SystemControlForegroundTransparentBrush}"/>
    <Setter Property="BorderThickness" Value="{ThemeResource ButtonBorderThemeThickness}"/>
    <Setter Property="Padding" Value="8,4,8,4"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
    <Setter Property="FontWeight" Value="Normal"/>
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
    <Setter Property="UseSystemFocusVisuals" Value="True"/>
    <Setter Property="FocusVisualMargin" Value="-3"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="RootGrid" Background="{TemplateBinding Background}">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="PointerOver">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                                                   Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseHighBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
                                                                   Storyboard.TargetProperty="BorderBrush">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
                                                                   Storyboard.TargetProperty="Background">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                                                   Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
                                                                   Storyboard.TargetProperty="Background">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseMediumLowBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
                                                                   Storyboard.TargetProperty="BorderBrush">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                                                   Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter x:Name="ContentPresenter"
                                      BorderBrush="{TemplateBinding BorderBrush}"
                                      BorderThickness="{TemplateBinding BorderThickness}"
                                      Content="{TemplateBinding Content}"
                                      ContentTransitions="{TemplateBinding ContentTransitions}"
                                      ContentTemplate="{TemplateBinding ContentTemplate}"
                                      Padding="{TemplateBinding Padding}"
                                      HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                      AutomationProperties.AccessibilityView="Raw"
                                      Background="{TemplateBinding Background}"
                                      Foreground="{TemplateBinding Foreground}"
                                      Style="{StaticResource BaseContentPresenterStyle}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

在上述样式中,我们通过设置Button控件的BorderBrush属性为所需的线条样式,实现了线条样式的应用。

对于线条样式的应用场景,可以用于绘制图形、路径、边框等需要自定义线条样式的界面元素。

腾讯云相关产品中,与线条样式相关的产品和服务可能包括图形处理服务、绘图工具等,具体可以根据实际需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • UWP WinUI 制作一个路径矢量图标按钮样式入门

    本文将告诉大家如何在 UWP 或 WinUI3 或 UNO 里,如何制作一个路径按钮。...应用程序里面,可以使用这些矢量图作为按钮图标,从而更好进行表意,让界面有更好设计。...这样样式命名方法是我习惯用,因为如此可以方便一级级点下去,特别在有 ReSharper 帮助下,会更加好用,样式特别多时候,这样写能够和 ReSharper 更好进行配合 这样样式,可以应用到按钮代码上...自然是可以,接下来咱使用简单附加属性来解决此问题 通过附加属性方式,既可以用在 UWP 等框架上,同样 WPF 里面也是可以使用,毕竟都是相同系列框架 在后台 cs 代码里面定义一个名为 ButtonHelper...Stroke 和 StrokeThickness 分别修改轮廓颜色画刷和轮廓线条粗细,可以使用 Fill 属性修改填充画刷。

    10410

    创建一个ProgressControl

    不过无论Blend怎么坏都不能让我写漂亮控件心屈服,毕竟写了这么多年XAML,只靠Visual Studio勉勉强强还是可以写样式,这篇文章介绍控件就几乎全靠Visual Studio写了全部样式...之前写文章 创建一个进度按钮 我实现了一个ProgressButton,它主要有以下几个功能: 有Ready、Started、Completed、Faulted四种状态; 从Ready状态切换到Started...ControlTemplate有些复杂,这次用于Started、Completed和Faulted等状态下显示元素都使用样式并统一了它们ContentTemplete,大大简化了ProgressStateIndicator...3.2.2 Animation​Set Started到Paused之间有一个平移过渡,为了使位移根据元素自身宽度决定我写了个RelativeOffsetBehavior,里面用到了UWP Community...为了减轻VisualTransition负担,VisualTransition只改变EllipseVisibility,Opacity动画使用了UWP Community Toolkit

    70830

    了解模板化控件(1):基础知识

    1.概述 UWP允许开发者通过两种方式创建自定义控件:UserControl和TemplatedControl(模板化控件)。...1.2 模板化控件 可以使用ControlTemplate控件即为模板化控件(TemplatedControl),UWP,所有派生自Control控件(除了UserControl)都是模板化控件...注意其中两个TargetType="local:MyFirstControl",第一个用于匹配MyFirstControl.csDefaultStyleKey,第二个确定ControlTemplete...“对象与时间线”面板,选中“Style”节点可在右侧“属性”面板编辑Style除Template以外属性: ?...“Style”节点,右键打开菜单,选中“编辑模版”->“编辑当前项”开始编辑Template,此时左侧“对象与时间线”面板展示Template结构: ? ?

    69930

    给WPF一个HyperlinkButton

    UWPHyperlinkButton下划线是代码里写死,大概是这样: if (VisualTreeHelper.GetChildrenCount(contentPresenter) == 1...UWP很多使用代码控制样式行为,通常宣称理由是为了性能,但Button是整个UI中最不需要性能部分,毕竟一个UI不可能有几百个Button,就算有几百个HyperlinkButton,现代UI框架也不可能仅仅因为下划线就导致性能下降...ControlTemplate.Resources添加了一个TextBlock全局样式,里面的DataTrigger设置为当鼠标进入父节点HyperlinkButton时TextDecorations...,或许就是因为这样它不能应用ControlTemplate.ResourcesTextBlock全局样式。...(我记得UWP中就没有这个问题,UWPContentPresenter自带透明背景) 4. 结语 HyperlinkButton明明很重要但WPF又不提供,幸好自己写起来也很简单。

    1.1K20

    WindowsXamlHost: WPF 中使用 UWP 控件库控件

    WindowsXamlHost: WPF 中使用 UWP 控件(Windows Community Toolkit) 一文,我们说到了 WPF 引入简单 UWP 控件以及相关注意事项...创建一个 UWP 控件库 建议专门为你复杂 UWP 控件创建一个 UWP 控件库。在这个控件库开发就像普通 UWP 应用一样。...image.png ▲ 生成文件已复制到 WPF 目录下 WPF 项目中间接引用 UWP 控件库 现在, WPF 项目中开启所有文件夹显示,然后将 UWP 项目中生成文件添加到 WPF...项目中: image.png ▲ WPF 项目中添加 UWP 控件库 为了能够每次编译 WPF 项目的时候确保 UWP 项目先编译,需要为 WPF 项目设置项目依赖。... WPF 项目中使用 UWP 控件库控件 这时, WindowsXamlHost 中就可以添加 UWP 控件库 MainPage 了。

    5.9K20

    New UWP Community Toolkit - Carousel

    下面来看一下几个主要类主要代码实现,因为篇幅关系,我们只摘录部分关键代码实现: 1. Carousel.cs  具体分析代码前,我们先看看 Carousel 类组成: ?...而部分依赖属性 PropertyChanged 事件由 OnCarouselPropertyChanged(d, e) 来实现; 下面来看一下 Carousel 类构造方法: 构造方法,首先设置了样式...Carousel.xaml 如上面类结构介绍时所说,Carousel.xaml 是 Carousel 控件样式文件;下面代码我把非关键部分用 ‘...’...CarouselItem.cs 在前面 Carousel.xaml 我们看到了 CarouselItem 样式,有针对 VisualStateManager 样式状态,而 CarouselItem...总结 到这里我们就把 UWP Community Toolkit Carousel 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助,让你图片列表控件更加炫酷灵动

    1.4K60

    WPF 应用完全模拟 UWP 标题栏按钮

    然而,Windows 上应用就应该有 Windows 应用样子嘛,保证自定义同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上体验一致性。...本文将分享一个我自制标题栏按钮样式,使其与 UWP 原生应用一模一样(同时支持自定义)。...---- WPF 使用 WindowChrome,自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome) 一文,我使用 WindowChrome 尽可能将 Windows...▲ UWP 原生版本(为避免说我拿同一个应用附图,我选了微软商店应用对比) 为了使用到这样近乎原生窗口样式,我们需要两个文件。一个放 XAML 样式,一个放样式所需逻辑代码。...如果不设置,效果跟 UWP 默认情况下效果完全一样。 下面是这份样式 Whitman - Microsoft Store 应用实际使用效果,其中颜色设置就是上面代码中所指定颜色: ?

    2.2K20

    UWP 轻量级样式定义(Lightweight Styling)

    更新于 2018-12-14 01:54 UWP ,可以通过给控件直接设置属性或在 Style 设置属性来定制控件样式;不过这样样式定义十分有限,比如按钮按下时样式就没法儿设置...当然可以通过修改 Template 来设置控件样式,然而 UWP 控件样式代码实在是太多太复杂了,还不容易从 Blend 复制了大量代码出来改,下个版本样式又不一样,于是我们就丢了不少功能。...本文将介绍 UWP 轻量级样式定义(Lightweight styling),你既不用写太多代码,又能获得更多样式控制。...image.png ▲ 按钮更多颜色定制 相比于 Template -> Edit Copy 这种重量级样式与模板定义,保证足够样式定义情况下,代码量是不是少了非常多了呢?...image.png ▲ 灰色 “编辑副本” 第三步:寻找你感兴趣主题资源 Key,记下来准备定义 在编辑副本后,你可以副本代码中找到按钮原生样式定义。

    69020

    New UWP Community Toolkit - ImageEx

    我们来看一下官方介绍和官网示例展示: ?...ImageEx.xaml ImageEx 控件样式文件,来看一下 Template 部分,包含了三层控件:PlaceHolderImage,Image 和 Progress,这样就可以完成加载或失败时显示...PlaceHolder 和 Progress,加载成功后显示 Image;同时样式 Failed,Loading,Loaded 和 Unloaded 状态时,也会切换不同层显示来完成状态切换; <...,图二是正常显示状态;如果 Source 设置有误,则会出现图三只显示 PlaceHolder 情况,实际应用图片加载失败时我们应该有对应显示方法; <controls:ImageEx Name...总结 到这里我们就把 UWP Community Toolkit  ImageEx 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助。

    99470

    New UWP Community Toolkit - RadialProgressBar

    我们来看一下官方介绍和官网示例展示: ?...组成,分别代表了进度条灰色底和实际进度条,因为两个部分样式基本一致,所以我们省略了一部分。...可以看到,两个部分样式组成,都是一个 Path 几何图形,里面包含了 ParhFigure,它 segment 属性包含了 ArcSegment:一个弧度区段;这就是样式基本组成了。...: ① ComputeNormalizedRange() 根据进度条最大值和最小值计算出区间,以及当前值,计算出当前值区间中占百分比,如果当前值 > 0.999, 则取值 0.999 private...总结 到这里我们就把 UWP Community Toolkit RadialProgressBar 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助;

    976100

    New UWP Community Toolkit - RangeSelector

    概述 前面 New UWP Community Toolkit 文章,我们对 V2.2.0 版本重要更新做了简单回顾,其中简单介绍了 RangeSelector,本篇我们结合代码详细讲解一下 RangeSelector...实际应用开发 RangeSelector 也有着非常广泛应用,例如筛选时价格区间选择等等。我们来看一下官方示例展示: ?...- RangeSelector 控件定义和事件处理类 RangeSelector.xaml - RangeSelector 样式文件 ?...总结 到这里我们就把 UWP Community Toolkit RangeSelector 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助,大家也可以实际应用...,编写更丰富控件样式,或者更特殊范围选择,比如环形等。

    89970

    New UWP Community Toolkit - DropShadowPanel

    DropShadowPanel 提供阴影效果有很多应用场景,比如给文本提供阴影,可以让文本背景变化时可以明显显示,比如地图上标尺文本;应用在图形或图片时,可以设置阴影效果,另外它有很多参数可以调整...- DropShadowPanel 控件样式文件 ?...DropShadowPanel.xaml DropShadowPanel 控件样式文件,我们来看 Template 部分:投影效果实现,是使用一个 Border 放置实际内容控件后面,通过 Border...对内容显示和位置调整来实现投影。...总结 到这里我们就把 UWP Community Toolkit DropShadowPanel 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助。

    97370

    WPF 使用 WindowChrome,自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWPChrome)

    WPF 使用 WindowChrome,自定义窗口标题栏同时最大程度保留原生窗口样式(类似 UWP/Chrome) 发布于 2018-07-12 07:57...---- 使用 Windows 原生窗口体验应用 自定义窗口样式同时保证一致 Windows 窗口风格体验优秀应用有这些: Windows 10 UWP 应用 当然少不了 UWP 应用...▲ 样式已经被遮挡 不止是样式被遮挡,我们应该能注意相比于原生还有这些不同: 我们边框是白色,原生边框是系统主题色 鼠标划入我们窗口内才开始拖拽改变大小,但原生阴影区域就能开始调整大小了 ?...也就是说,Win32 原生方法也许能达到 Google Chrome 效果,但不可能达到 UWP 效果。 为了完全模拟 UWP,标题栏上按钮只能自绘了。...原生 Windows 窗口体验 UWP 应用对窗口样式定制能力是非常小,远远小于传统 Win32 应用。

    6.5K20

    为Form和自定义Window添加FunctionBar

    前言 我常常看到同一个应用程序表单按钮————也就是“确定”、“取消”那两个按钮————实现得千奇百怪,其实只要使用统一Style起码就可以统一按钮大小,而我喜欢更进一步将”确定“、”取消“或其它按钮封装进一个自定义控件里...为Form添加FunctionBar 本来打算派生自ToolBar,或者参考UWPCommandBar,但最后决定参考MahApps.MetroWindowCommands创建了FormFunctionBar...,放进FormFunctionBarButton及KinoButton都会自动应用DefaultStyle预设样式。...然后Form添加FunctionBar属性,并在控件底部放一个PlaceHolder: <RowDefinition...这样做可以统一所有Form按钮。由于做得很简单,后期可以再按需要添加其他控件样式

    77130

    win10 uwp 简单制作一个 Path 路径绘制图标按钮

    本文告诉大家 UWP 或 WinUI 3 里面如何简单制作一个由 Path 几何路径图形绘制图标按钮 先在资源里面定义按钮样式,重写 Template 属性,通过 Template 里面放入 Path...绑定 Data 到内容从而实现让 Path 显示集合路径图形,代码如下 ...UWP 或 WinUI 3 里,字符串类型应该使用 x:String 而不是使用 system:String 方式,如以下错误代码例子 <Page x:Class="LefernochihairWhemfawqarkemche.MainPage...回到使用代码里面,图标按钮<em>的</em>使用方法特别简单,只需要将以上<em>的</em> x:String <em>的</em>几何路径设置到按钮<em>的</em>内容,然后设置按钮<em>的</em><em>样式</em>就完成 <Button Style="{StaticResource...,下面给出页面的代码,可以拷贝自己项目里了解效果 <Page x:Class="LefernochihairWhemfawqarkemche.MainPage" xmlns="http

    17710
    领券