【问题标题】:XAML Binding a ComboBox Style Setter for Background to a memory object's Field valueXAML 将背景的组合框样式设置器绑定到内存对象的字段值
【发布时间】:2012-12-28 01:44:43
【问题描述】:

我有一个 ComboBox,绑定到一个对象列表。我可以让对象很好地填充下拉列表。我正在尝试为下拉项目列表中的每个对象设置背景颜色。我可以在下面的样式代码中轻松地为它们设置任何颜色。

我要做的是将背景颜色值绑定到我的 Key 对象的 KeyColorValue 字段。

这是我的 XAML:

              DisplayMemberPath="Name" 
              HorizontalAlignment="Left" 
              Margin="300,103,0,0" 
              VerticalAlignment="Top"
              Width="186" 
              SelectionChanged="roleBoundSelector_SelectionChanged" >
        <ComboBox.ItemContainerStyle>
            <Style TargetType="ComboBoxItem">
                <Setter Property="Background"
                Value = "{Binding Path=KeyColorValue}" />    

(如果我在这里输入颜色,它就可以正常工作...需要绑定到 MyKeys 对象的 KeyColorValue。)

【问题讨论】:

    标签: xaml data-binding combobox setter


    【解决方案1】:

    在你的风格中试试这个:

    <Setter Property="Background">
        <Setter.Value>
            <Binding RelativeSource="{RelativeSource Self}" Path="DataContext.KeyColorValue"/>
        </Setter.Value>
    </Setter>
    

    每个 ComboBoxItem 的 DataContext 是一个包含在列表中的对象,它为 ComboBox 的 ItemsSource 提供数据。

    如果有帮助,请告诉我,问候!

    【讨论】:

    • 这有很大帮助 - 我刚刚发现我有两种选择从对象列表返回的颜色的数据类型:一种是 System.Drawing.Color 类型,另一种是字符串与颜色的十六进制值。有没有办法在这些样式中转换或转换类型?谢谢!!
    • 很高兴能提供帮助。如果您认为答案令人满意,请将其标记为答案(这也会提高您的声誉)。关于转换,我喜欢这里的第二个答案stackoverflow.com/questions/3309709/… 有很多转换方法,但我认为您会使用该链接。问候!
    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2013-07-23
    相关资源
    最近更新 更多