Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在IValueConverter中使用EnvironmentColor.ToolWindowTextBrushKey_C#_Wpf_Ivalueconverter - Fatal编程技术网

C# 在IValueConverter中使用EnvironmentColor.ToolWindowTextBrushKey

C# 在IValueConverter中使用EnvironmentColor.ToolWindowTextBrushKey,c#,wpf,ivalueconverter,C#,Wpf,Ivalueconverter,我正在使用XAML中的类设置标签控件的前景,如下所示。请注意,我在这里使用的是笔刷 但是,我想使用IValueConverter设置此颜色以决定要设置的颜色。但我不知道如何从转换器返回相同的内容。你能告诉我这是可以做到的吗?我找到了一个方法。Krekkon和Visual Studio extensions在评论中建议的链接的区别在于 我正在使用Visual Studio SDK的EnvironmentColor和VSBrush枚举(因此我无法使用新的SolidColorBrush(…) 我必

我正在使用XAML中的类设置标签控件的前景,如下所示。请注意,我在这里使用的是笔刷


但是,我想使用IValueConverter设置此颜色以决定要设置的颜色。但我不知道如何从转换器返回相同的内容。你能告诉我这是可以做到的吗?

我找到了一个方法。Krekkon和Visual Studio extensions在评论中建议的链接的区别在于

  • 我正在使用Visual Studio SDK的EnvironmentColor和VSBrush枚举(因此我无法使用新的SolidColorBrush(…)
  • 我必须将其设置为动态资源,以便根据VisualStudio中选择的主题设置颜色
因此,我在转换器中的代码如下

public class MessageBackgroundConverter : BaseConverter, IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        if (values != null)
        {
            var postedByUserId = Guid.Parse(values[0].ToString());
            var loggedInUserId = Guid.Parse(values[1].ToString());
            var control = values[2] as Border;
            if (control != null)
            {
                if (postedByUserId == loggedInUserId)
                {
                    control.SetResourceReference(Border.BackgroundProperty, VsBrushes.CommandBarGradientKey);
                    return null;
                }
                control.SetResourceReference(Border.BackgroundProperty, VsBrushes.ToolWindowBackgroundKey);
                return null;
            }
        }
        return Brushes.Transparent;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
请注意,我使用的是多值转换器,并传递需要设置颜色的控件。这是因为对于设置DynamicSource,我们需要使用

control.SetResourceReference(...);

请检查答案或向我们添加更多帮助