使用多重绑定设置c#wpf组合框背景颜色[关闭]

Posted

技术标签:

【中文标题】使用多重绑定设置c#wpf组合框背景颜色[关闭]【英文标题】:setting c# wpf combobox background color with multibinding [closed] 【发布时间】:2021-03-08 09:00:34 【问题描述】:

我试图让我的组合框选择值背景颜色基于它自身的值和其他组合框值,但是在转换器中调试时我发现 values[0] 获取依赖项。而不是设置值。 所以我尝试使用 Relative Source = self ,但随后出现此错误: "对象引用未设置为对象的实例"

<ComboBox.Background>
    <MultiBinding Converter="converters:BoolToColorConverter">
        <Binding RelativeSource="RelativeSource Mode=Self" Path="SelectedValue"/>
        <Binding ElementName="cbStdPlate"
            Path="SelectedIndex" />
    </MultiBinding>
</ComboBox.Background>

谁能给我一个提示?

【问题讨论】:

【参考方案1】:

检查您如何处理您的 Converter 属性。我已经重现了您的错误,并且这样做很有效:

 <Window.Resources>
        <local:Converter x:Key="BoolToColorConverter"/>
 </Window.Resources>

您可以将Window 替换为您正在使用的控件。 在 Background Multibinding 属性中,您可以像这样调用转换器:

<ComboBox.Background>
   <MultiBinding Converter="StaticResource BoolToColorConverter">
      <Binding RelativeSource="RelativeSource Mode=Self" Path="SelectedValue"/>
      <Binding ElementName="cbStdPlate"
         Path="SelectedIndex" />
   </MultiBinding>
</ComboBox.Background>

这样,如果您调试转换器的 values[] 属性,您将看到所选值作为第一个位置。

【讨论】:

谢谢,我检查了我的转换器逻辑,我把空值检查放在那里``` if (values[0] == null || values[1] == null) return DependencyProperty.UnsetValue; ``` 然后我就找到了我的问题,其中一个值的转换错误

以上是关于使用多重绑定设置c#wpf组合框背景颜色[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

组合框中的 WPF 数据绑定彩色项目

WPF 组合框颜色绑定问题

在 WPF / C# 中选择绑定项目后维护组合框文本

WINAPI - 设置组合框下拉菜单的背景和文本颜色

设置datagrid行背景颜色WPF - 循环[关闭]

DataGrid 数据绑定/更新中的 WPF 组合框不起作用