WPF 柱形图样式:删除渐变效果,设置 y 轴上散列标记的颜色(次网格线)

2024-03-03

我有一个 WPF ColumnSeries 图表,看起来不太完美。我想知道如何通过三种不同的方式改进它

  1. 去除渐变效果。我传递了纯色作为 ItemColor,例如绿色,但我得到了渐变颜色。有没有办法消除这个影响。我知道渐变色听起来是个天才的想法,而且看起来也不错。但在我正在做的小事情中,这不是一个好主意。在下面的图片中,第一张是我现在拥有的,第二张是我想要的。灰色是渐变色(见红圈那一栏)

  2. 在 y 轴右侧显示 y 轴上的散列标记(次网格线)。它目前位于左侧并且是黑色的。我想知道如何显示轴右侧的线条,以及是否可以设置线条的颜色,那就太好了。(请参阅附在蓝色圆圈中的图片)

(我实际上已经找到了答案 http://msmvps.com/blogs/deborahk/archive/2011/03/05/silverlight-charting-formatting-the-tick-marks.aspx http://msmvps.com/blogs/deborahk/archive/2011/03/05/silverlight-charting-formatting-the-tick-marks.aspx)

  1. 删除列的白色边框。我查过了史努比。但是,我仍然不知道边界位于哪一层。 (请看附图黑圈内的那张)

请阅读下面的一小段代码,看看我现在拥有什么。

  <charting:ColumnSeries DependentValuePath="ItemValue" IndependentValuePath="ItemName" ItemsSource="{Binding}">
        <charting:ColumnSeries.DataPointStyle>
            <Style TargetType="charting:ColumnDataPoint">
                <Setter Property="Background" Value="{Binding ItemColor}"/>
                <Setter Property="BorderBrush" Value="Transparent"/>
            </Style>
        </charting:ColumnSeries.DataPointStyle>
    </charting:ColumnSeries>
    <charting:Chart.Axes>
        <charting:LinearAxis Orientation="Y" ShowGridLines="True"/>
        <charting:CategoryAxis Orientation="X" ShowGridLines="False"/>
    </charting:Chart.Axes>

对于ItemColor,后面的代码是:

ItemColor = new System.Windows.Media.SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("Gray"));

我知道这有点旧并且已经回答了,但是我在试图找出与 Jan 在问题 1 中询问的相同的事情时发现了这篇文章,随后我偶然发现了一种不太复杂的方法来消除条形内的渐变。所以我想我应该为后代分享。

我想到的技巧是忽略栏背景颜色,并通过设置其颜色来设置 ColumnSeries 颜色边框画笔颜色,然后将 BorderThickness 设置为大得离谱(例如 100)。如果该值足够大(与可能的数据集相比),则边框将完全覆盖条形图的内部,并且渐变填充将不可见。如果它太大,它不会溢出或不会出现任何奇怪的行为,所以在这里“太大”是有意义的。 (尽管如果有人认为这有可能引起问题,我肯定想知道!)

这是 XAML:

<chartingToolkit:ColumnSeries.DataPointStyle>
    <Style TargetType="chartingToolkit:ColumnDataPoint">
        <Setter Property="BorderBrush" Value="Blue"/>
        <Setter Property="BorderThickness" Value="100"/>
        <Setter Property="DependentValueStringFormat" Value="{}{0:C0}"/>
    </Style>
</chartingToolkit:ColumnSeries.DataPointStyle>

它看起来像这样:

显然,它并不完美,您放弃了在列周围设置实际边框,但如果这适合您的目的,那么它比重新模板化图表要简单得多,并且允许您更轻松地控制值格式等内容(我那里需要货币格式,正如您从代码中看到的那样)。

希望这对某人有用或感兴趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 柱形图样式:删除渐变效果,设置 y 轴上散列标记的颜色(次网格线) 的相关文章

  • 使用 MVVM 在 WPF 中进行 COMBOBOX 过滤

    我正在使用 WPF mvvm 方法开发一个应用程序 我有一个要求 必须在组合框中显示项目列表以供选择 基于一些标志 我需要从组合框中过滤掉一些项目以供选择 我尝试使用两种不同的项目源 一个具有完整列表 另一个具有过滤列表 并基于我想要更改项
  • 在 WPF 中处理第二个 UI 线程

    我有一个长时间运行的进程在我的 UI 线程上运行 我无法离开 UI 线程 相反 我尝试创建第二个具有等待动画的 UI 线程 这是我用来创建第二个 UI 线程的代码 Private busyThread As Thread Private w
  • 如果在构造函数中初始化该属性,则似乎不会设置 XAML 绑定

    当属性在构造函数内初始化时 我遇到了控件模板内数据绑定的问题 这是展示案例 您也可以下载样品溶液 http www filehosting org file details 75794 WpfApplication5 zip 自定义控件1
  • 如何在不监听框架控件中定义的任何鼠标事件的情况下检测鼠标单击?

    是否可以在不侦听框架控件中定义的任何鼠标事件的情况下检测鼠标单击 我的意思是 我不想编写如下代码 control MouseLeftButtonDown this HandleMouseLeftButtonDown 但我想知道用户是否点击屏
  • 如何在wpf中打印屏幕截图

    首先我英语说得不太流利 反正 我正在尝试这样做 然而这还不是第三天 我现在正在做的是屏幕捕获后的程序屏幕打印 我参考这段代码 https social msdn microsoft com Forums windows en US 0623
  • 将 WPF 快捷键绑定到 ViewModel 中的命令

    我有一个使用 MVVM 模式的 WPF 应用程序 将按钮连接到 VM 非常简单 因为它们实现了 ICommand 我有一个工作原理类似的上下文菜单 下一步是为上下文菜单创建快捷键 我不知道如何让快捷键调用命令 这是一个例子
  • 如何在 RichTextBox 中以编程方式移动插入符位置?

    我有一个 RichTextBox 其中的特殊文本位具有自定义格式 但是 存在一个错误 即插入字符后 插入符号会放置在新插入的字符之前而不是之后 这是因为对于每次编辑 代码都会重新计算内容以应用自定义格式 然后像这样设置 CaretPosit
  • 列表视图上的 TextBlock:如何忽略 TextBlock 中的点击并让列表视图处理它们

    我有一个显示大量信息的列表视图 但是当它为空时 我想在其上覆盖一个文本块 上面写着 没有要显示的信息 或 bla bla bla 添加信息 列表视图设置为响应鼠标单击 但现在如果我单击文本块 这些事件将路由到文本块 我怎样才能让这些事件转到
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • ListView ItemContainerStyle 模板

    我创建了用作 ListView 项目模板的样式 其中包含 CheckBox 和 TextBlock
  • 如何使 WPF 应用程序在 Web 浏览器上运行

    我们有一个用 WPF 编写的现有应用程序 我们正在寻找一种迁移它的方法 以便它可以在 Web 浏览器上运行 深入研究后 我们似乎需要找到一种将代码编译为 WebAssembly 的方法 但我不确定它对于现有的完全加载的 WPF 应用程序有多
  • 先学Silverlight还是先学WPF?

    看来 Silverlight WPF 是 NET 用户界面开发的长期未来 这很棒 因为我可以看到在客户端和 Web 开发端重用 XAML 技能的优势 但看看 WPF XAML Silverlight 它们似乎是非常庞大的技术 那么从哪里开始
  • CommandManager.InvalidateRequerySuggested 不会导致对 MVVM-Light 中的 CanExecute 进行重新查询

    我正在使用 MVVM Light RelayCommand private ICommand myRevertCmd public ICommand Revert get if myRevertCmd null myRevertCmd ne
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表

随机推荐