extjs中怎样为一个panel设置背景色???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了extjs中怎样为一个panel设置背景色???相关的知识,希望对你有一定的参考价值。

id: "top", region: 'north', xtype: 'panel', height: 25, margins: '5 0 0 5', layout: "fit", bodyStyle:'background-color:red'//背景颜色是这样设置吗,怎么不对?

是这样设置 bodyStyle: \'background:#ffc; padding:10px;\',
var resultsPanel = Ext.create(\'Ext.panel.Panel\',
title: \'Results\',
width: 600,
height: 400,
renderTo: Ext.getBody(),
bodyStyle: \'background:#ffc; padding:10px;\',
layout:
type: \'vbox\', // Arrange child items vertically
align: \'stretch\', // Each takes up full width
padding: 5
,
items: [ // Results grid specified as a config object with an xtype of \'grid\'
xtype: \'grid\',
columns: [header: \'Column One\'], // One header just for show. There\'s no data,
store: Ext.create(\'Ext.data.ArrayStore\', ), // A dummy empty data store
flex: 1 // Use 1/3 of Container\'s height (hint to Box layout)
,
xtype: \'splitter\' // A splitter between the two child items
, // Details Panel specified as a config object (no xtype defaults to \'panel\').
title: \'Details\',
bodyPadding: 10,
items: [
fieldLabel: \'Data item\',
xtype: \'textfield\'
], // An array of form fields
flex: 2 // Use 2/3 of Container\'s height (hint to Box layout)
]
);追问

感谢!

bodyStyle: \'background:#ffc; padding:10px;\',


中间有条杆,我不想要,

 

可是直接这样写又不行 bodyStyle: \'background:#ffc\';怎么回事?

追答

border : false,

追问

我是想给这个区域设置一个背景,然后在上面添加items,可是这样就算把颜色设置成白色
background:#FFFFFF,也看不到其他项了,全被覆盖掉了。

参考技术A dfdfdf

使用背景色更改 TextBlock 前景色

【中文标题】使用背景色更改 TextBlock 前景色【英文标题】:Change TextBlock foreground color using background color 【发布时间】:2013-08-30 22:04:55 【问题描述】:

在我的 WPF 应用程序中,我必须根据用户条件不断更新 TextBlock 背景。 TextBlock 样式在 App.xaml 中定义。如果背景太暗(绿色/蓝色),我想将前景设置为白色,否则为黑色。我怎样才能做到这一点?我探索了以下两个选项:

    通过数据触发器: 在 App.xaml 中:

       <Style TargetType="TextBlock">             
         <Setter Property="FontSize" Value="14"/>
         <Setter Property="FontStyle" Value="Normal"/>
         <Style.Triggers>
            <DataTrigger Binding="Binding RelativeSource=RelativeSource Self,Path=Background,PresentationTraceSources.TraceLevel=High" Value="White">
                <Setter Property="Foreground" Value="Maroon"/>
            </DataTrigger>
         </Style.Triggers>
     </Style>
    

这似乎不起作用。我从未在 textblock 的前景属性中看到更新。在调试时,我看到以下绑定:

System.Windows.Data 警告:72:RelativeSource.Self 找到 TextBlock (hash=61003640) System.Windows.Data 警告:78:BindingExpression (hash=6398298):使用根项 TextBlock 激活 (hash=61003640) System.Windows.Data 警告:107:BindingExpression (hash=6398298):在级别 0,使用 TextBlock.Background 的缓存访问器:DependencyProperty(Background) System.Windows.Data 警告:104:BindingExpression (hash=6398298):使用访问器 DependencyProperty(Background) 将级别 0 的项目替换为 TextBlock (hash=61003640) System.Windows.Data 警告:101:BindingExpression (hash=6398298): GetValue at level 0 from TextBlock (hash=61003640) using DependencyProperty(Background): SolidColorBrush (hash=58614288) System.Windows.Data 警告:80:BindingExpression (hash=6398298): TransferValue - 得到原始值 SolidColorBrush (hash=58614288) System.Windows.Data 警告:89:BindingExpression (hash=6398298): TransferValue - 使用最终值 SolidColorBrush (hash=58614288)

什么是“SolidColorBrush (hash=58614288)”? SolidColorBrush类型的对象是Hex颜色代码还是hascode?​​p>

    使用 IValueConverter:没有尝试过,因为我不想将一个值转换为另一个值,而是根据其他一些属性更改来更改 UIElement 的属性。此外,由于几乎所有 UIElements 都在内部使用 TextBlock 来显示数据,因此转换器不会对性能造成影响吗?

我已经看过以下线程:Change TextBlock foreground color based on the background。这对我的情况没有帮助。 非常感谢任何帮助。

谢谢,

RDV

关于我的应用程序的更多信息:

当我的应用程序启动时,我的 TextBlocks 具有默认背景颜色。所有 Textblock 样式都存储在 ResourceDictionary 中,该 ResourceDictionary 存储在不同的解决方案中。我的应用程序的 App.xaml 中只有一个 ResourceDictionary:

<Application x:Class="MySolution"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/ResourcesSolution;component/Resources/GenericStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

FontWeight、FontStyle,甚至 Foreground 等都是从这里正确提取的。但这些是静态属性。在某些用户操作中,我在运行时更改了 TextBlock 的背景颜色,但有时这会使文本无法读取,例如绿色背景上的黑色文本。当背景颜色发生变化时,我当然也可以绑定前景色,但在这种情况下,我必须在所有视图中进行该绑定。相反,我希望有一个全局样式来处理这项工作,这样即使我忘记绑定前景色,也会自动选择正确的颜色。

我有一个大型应用程序,性能是一个主要问题。这就是为什么我对使用转换器犹豫不决,并且一直在寻找一些基于 xaml 的解决方案,因为这只是一个基于条件的问题。

【问题讨论】:

SolidColorBrush 是一种单色画笔,可以应用于背景/前景等。你能展示你的 Xaml 风格吗? 我也尝试绑定到 Background.Color。 【参考方案1】:

我通过仅在 TextBlock 控件上设置背景来测试我的代码,当声明为全局样式表时,我可以看到以下样式触发器按预期工作:

<Style TargetType="TextBlock">
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="FontStyle" Value="Italic"/>
        <Style.Triggers>
            <Trigger Property="Background" Value="White">
                <Setter Property="Foreground" Value="Aqua"/>
            </Trigger>
            <Trigger Property="Background.Color" Value="Transparent">
                <Setter Property="Foreground" Value="BlueViolet"/>
            </Trigger>
            <DataTrigger Binding="Binding RelativeSource=RelativeSource Self,Path=Background" Value="White">
                <Setter Property="Foreground" Value="Maroon"/>
            </DataTrigger>
            <DataTrigger Binding="Binding RelativeSource=RelativeSource Self,Path=Background.Color" Value="#FF008000">
                <Setter Property="Foreground" Value="Blue"/>
            </DataTrigger>

        </Style.Triggers>
    </Style>

但是,我最初并没有注意到这种行为,因为我假设 Button 的内容(内部由 TextBlock 表示)也应该使用 TextBlock 的样式触发器(它正在获取 TextBlock 的以全局样式定义的 FontSize 和 FontStyle)。

我认为这与 ContentPresenter 问题有关,应该在不同的线程中解决。

谢谢,

RDV

【讨论】:

***.com/questions/18541906/…

以上是关于extjs中怎样为一个panel设置背景色???的主要内容,如果未能解决你的问题,请参考以下文章

Winform 设置panel容器的背景为pictureBox

控件加在JAVA的PANEL上,怎样才能充满

Winform panel的底层为pictureBox然后显示pb为背景

winform 控件移动的闪烁问题

如何使 TreeView 背景色透明?

EXTJS 如何使grid的某一行字体颜色为红色