将背景绑定到WPF中的字符串

问题描述 投票:-2回答:1

我已“成功”将Background绑定到string,除了颜色不变。单击button确实会按预期更改颜色(string),但显示的颜色相同。

XAML:

Background="{Binding Color, Converter={StaticResource StringToColor}}"

转换器:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (Color)ColorConverter.ConvertFromString(value.ToString());
        }

。cs:

private void CheckBoxDrkChanged(object sender, RoutedEventArgs e)
        {
            if (_viewModel.IsDarkModeOn == true) _viewModel.Color = "Black";
            if (_viewModel.IsDarkModeOn == false) _viewModel.Color = "White";

            Debug.WriteLine(_viewModel.IsDarkModeOn);
            Debug.WriteLine(_viewModel.Color);

            e.Handled = true;
        }

_viewModel.Color在构造函数的开始处也设置为"White",否则应用程序会因为没有颜色而崩溃。

INotifyPropertyChanged已实现。

编辑

确定,所以您说将string更改为Brush。由于仅是代码,因此可能会起作用。但是创建新的Brush并非易事。我到目前为止尝试过的。

_viewModel.Color = new Brush("White");

Cannot create instance of abstract class.

_viewModel.Color = new SolidBrush(new Color("White"));

Color does not contain a constructor that takes 1 arguments.

编辑

这似乎有效。

_viewModel.Color = new SolidBrush(Color.FromName("White"));

需要进一步测试。

编辑

不起作用。绑定错误。我想我现在将回到string并创建适当的转换器。

编辑

现在可以了。解决。

c# wpf colors binding background
1个回答
0
投票

您正在将字符串投射为一种颜色,但背景需要使用画笔。 See

© www.soinside.com 2019 - 2024. All rights reserved.