马拉特Khasanov指出,不需要的绿色色调来自控件模板中名为“Animation”的对象。因此,另一个简单的方法是隐藏该对象。这也将禁用动画“glow”效果,我认为这是一项资产,但您可能会认为这是一个交易杀手。我通过Loaded事件的处理程序实现了这一点,如下所示。 这是受an answer to another question启发而来的。如果他们更改了控件模板,则可能不再起作用。
public void ProgressBar_Loaded(object sender, RoutedEventArgs e)
{
var progressBar = sender as ProgressBar;
if (progressBar == null) return;
var animation = progressBar.Template.FindName("Animation", progressBar) as FrameworkElement;
if (animation != null)
animation.Visibility = Visibility.Collapsed;
}
var yourcontrol = new ProgressBar();
// the control needs to load before it has a template.
yourcontrol.Loaded += (sender,e) => {
var str = new System.Text.StringBuilder();
using (var writer = new System.IO.StringWriter(str))
System.Windows.Markup.XamlWriter.Save(yourcontrol .Template, writer);
System.Diagnostics.Debug.Write(str);
};
// add it to your main grid, or some control thats loaded on screen.
gridMain.Children.Add(yourcontrol);
8条答案
按热度按时间kt06eoxx1#
试试这个
如果它不能按您的要求工作,您必须修改Progressbar的Style或ControlTemplate。
要执行此操作,您可以使用Microsoft的Expression Blend,也可以获取现有模板的副本并对其进行修改。
n7taea2i2#
不幸的是,它是以默认样式硬编码的:
您可以从原始XAML建立自己的样式,或尝试覆写Loaded事件中的背景,例如:
但不可靠
9gm1akwq3#
为什么不走一条阻力小的路,使用流行的MahApps库呢?
1.获取MahApps库:https://www.nuget.org/packages/MahApps.Metro
1.设置命名空间:
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
1.添加“地铁进度条”
1.将“前景”设置为您喜爱的颜色
nszi6y054#
马拉特Khasanov指出,不需要的绿色色调来自控件模板中名为“Animation”的对象。因此,另一个简单的方法是隐藏该对象。这也将禁用动画“glow”效果,我认为这是一项资产,但您可能会认为这是一个交易杀手。我通过Loaded事件的处理程序实现了这一点,如下所示。
这是受an answer to another question启发而来的。如果他们更改了控件模板,则可能不再起作用。
4ngedf3f5#
当Windows视觉设置为最佳性能进行优化时,我遇到了类似的问题(控制面板-〉系统-〉高级系统设置-〉高级-〉性能-〉设置-〉视觉效果-〉调整为最佳性能)。进度条在正常设置下看起来很好,但在“最佳性能”下很糟糕。我刚刚将ForeGround改为“LightGreen”。
这是我在正常情况下看到的默认ForeColor
以下是我在调整为最佳性能时看到的情况
这是找零
以下是我在调整为最佳性能后看到的情况
更多细节:http://justmycode.blogspot.com.au/2012/08/the-case-of-strangely-coloured.html
svmlkihl6#
我发现重写整个样式非常有用。
进度样式(带有一些格式)如下所示:
zphenhs47#
使用风格和定制根据您的要求
gzszwxb48#
试试看: