作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 MahApps 并尝试让它的强调色自动应用于 OxyPlot 图表。我正在使用 Caliburn 并在我的 View 模型中以编程方式设置我的 LineSeries:
_bubbleSeries = new LineSeries
{
StrokeThickness = 2,
Color = {Binding AccentColorBrush} // <-- This line here would be nice
CanTrackerInterpolatePoints = false,
Title = "Bubbles",
Smooth = true,
};
在 XAML 中绑定(bind)到 AccentColorBrush 很容易,但 OxyPlot 不允许我在 XAML 中设置 LineSeries,因此非常感谢任何有关如何在我的 ViewModel 中以编程方式执行此操作的建议。
最佳答案
您可以通过隐藏代码设置AccentColor
_bubbleSeries.SetResourceReference(ColorProperty, "AccentColor");
好处是,这是 DynamicResource
,所以如果您更改口音或主题,它就会发生变化。
编辑
在我了解到 LineSeries
不是 FrameworkElement
之后,我可以提供另一种可能的解决方案。
ThemeManager
有一个事件来对主题更改使用react。
ThemeManager.IsThemeChanged += ThemeManager_IsThemeChanged;
void ThemeManager_IsThemeChanged(object sender, OnThemeChangedEventArgs e)
{
// handle theme change
}
有了这些事件参数。
public static event EventHandler<OnThemeChangedEventArgs> IsThemeChanged;
public class OnThemeChangedEventArgs : EventArgs
{
public AppTheme AppTheme { get; set; }
public Accent Accent { get; set; }
}
所以你可以这样设置颜色
// this = maybe your window
var accentColor = ThemeManager.GetResourceFromAppStyle(this, "AccentColor")
// or
var accentColor = ThemeManager.GetResourceFromAppStyle(Application.Current.MainWindow, "AccentColor")
// initial
_bubbleSeries = new LineSeries
{
StrokeThickness = 2,
Color = accentColor,
CanTrackerInterpolatePoints = false,
Title = "Bubbles",
Smooth = true,
};
现在主题更改后
void ThemeManager_IsThemeChanged(object sender, OnThemeChangedEventArgs e)
{
// handle theme change
_bubbleSeries.Color = e.Accent.Resources["AccentColor"];
}
希望这对现在有所帮助!
关于c# - 以编程方式将 Oxyplot 绑定(bind)到 MahApps AccentColorBrush,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428050/
我正在使用 MahApps 并尝试让它的强调色自动应用于 OxyPlot 图表。我正在使用 Caliburn 并在我的 View 模型中以编程方式设置我的 LineSeries: _bubbleSer
我是一名优秀的程序员,十分优秀!