【问题标题】:setting c# wpf combobox background color with multibinding [closed]使用多重绑定设置c#wpf组合框背景颜色[关闭]
【发布时间】: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>

谁能给我一个提示?

【问题讨论】:

    标签: c# wpf combobox multibinding


    【解决方案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; ``` 然后我就找到了我的问题,其中一个值的转换错误
    猜你喜欢
    • 2011-07-26
    • 2020-05-22
    • 2017-12-31
    • 2014-09-24
    • 2019-05-15
    • 2022-12-06
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多