gpt4 book ai didi

c# - 以编程方式将 Oxyplot 绑定(bind)到 MahApps AccentColorBrush

转载 作者:行者123 更新时间:2023-11-30 16:51:48 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com