首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何共享wpf样式设置程序

问如何共享wpf样式设置程序
EN

Stack Overflow用户
提问于 2012-07-13 14:35:47
回答 3查看 465关注 0票数 0

我有以下ResourceDictionary:

代码语言:javascript
复制
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="StyleComboBox" TargetType="{x:Type ComboBox}">
        <Setter Property="BorderBrush" Value="DarkGray" />
        <Setter Property="BorderThickness" Value="1" />
        <!-- Styles for ComboBox -->
    </Style>
    <Style x:Key="StyleTextBox" TargetType="{x:Type TextBox}">
        <Setter Property="BorderBrush" Value="DarkGray" />
        <Setter Property="BorderThickness" Value="1" />
        <!-- Styles for Textbox -->
    </Style>
</ResourceDictionary>

怎么可能只在一个位置使用setter呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-13 14:42:36

wpf中的样式可以从其他样式继承。

代码语言:javascript
复制
<Style x:Key="baseStyle" TargetType="TextBlock">
     <Setter Property="FontSize" Value="12" />
      <Setter Property="Background" Value="Orange" />
 </Style>


 <Style x:Key="boldStyle" BasedOn="{StaticResource baseStyle}" TargetType="TextBlock">
     <Setter Property="FontWeight" Value="Bold" />
 </Style>

source

代码语言:javascript
复制
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Style x:Key="baseStyle" TargetType="Control">
            <Setter Property="BorderBrush" Value="DarkGray" />
            <Setter Property="BorderThickness" Value="1" />
        </Style>

        <Style x:Key="StyleComboBox" BasedOn="{StaticResource baseStyle}" TargetType="{x:Type ComboBox}">

            <!-- Styles for ComboBox -->
        </Style>
        <Style x:Key="StyleTextBox" BasedOn="{StaticResource baseStyle}" TargetType="{x:Type TextBox}">

            <!-- Styles for Textbox -->
        </Style>
    </ResourceDictionary>
票数 2
EN

Stack Overflow用户

发布于 2012-07-13 15:06:57

代码语言:javascript
复制
  <Style TargetType="Control" x:Key="Controlbase">
        <Setter Property="Control.BorderThickness" Value="10"/>
    </Style>
    <Style  x:Key="StyleComboBox" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource Controlbase}">
        <Setter Property="BorderBrush" Value="DarkGray" />
        <!-- Styles for ComboBox -->
    </Style>
    <Style x:Key="StyleTextBox" TargetType="{x:Type TextBox}"  BasedOn="{StaticResource Controlbase}">
        <Setter Property="BorderBrush" Value="DarkGray" />
        <!-- Styles for Textbox -->
    </Style>

我希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-09-25 00:01:50

好奇这对你有没有用。需要注意的是,您正在重新定义ComboBox的样式,它基于您的控件基础样式。假设控件模板不受此影响,因为这将是不好的。ComboBox不仅仅是一个简单的控件,它需要继承样式并保留作为ComboBox所意味着的所有控件模板。例如,它是一个继承自ItemsControl的SelectorControl。

我想知道改变它的样式是否也会导致它更喜欢/使用控件的默认控件模板,而不是保留它的“身份”,比如ComboBox。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11465327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档