You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ComboBox选中的颜色设置WPF中Ellipse的填充/背景色

错误原因
  • 绑定源配置错误:{Binding ComboboxCOLOR}默认绑定的是当前窗体DataContext下的ComboboxCOLOR属性,而非你定义的ComboBox控件
  • 取值路径错误:ComboBox的ItemsSource是反射Colors类得到的PropertyInfo对象集合,选中项本身不是颜色值,需要取其Name属性才能得到对应的颜色名称,WPF内置类型转换器可自动将合法颜色名称转换为Fill属性需要的画刷对象
解决方案

方案1:仅修改Ellipse绑定(无需修改其他代码)

直接调整Ellipse的Fill绑定,指定绑定源为ComboBox控件,取值路径为选中项的Name属性:

<Ellipse Fill="{Binding SelectedItem.Name, ElementName=ComboboxCOLOR}" Name="Ellipse"
         Margin="5" Height="40" Width="40" 
         Stroke="Black" StrokeThickness="5">
</Ellipse>

方案2:搭配SelectedValuePath优化绑定(可维护性更好)

第一步给ComboBox添加SelectedValuePath属性,指定选中值默认取Name属性:

<ComboBox Name="ComboboxCOLOR" Height="25"  Width="180" SelectedValuePath="Name">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Rectangle Fill="{Binding Name}" Width="16" Height="16"/>
                <TextBlock Text="{Binding Name}" />
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

第二步修改Ellipse的Fill绑定为绑定ComboBox的SelectedValue:

<Ellipse Fill="{Binding SelectedValue, ElementName=ComboboxCOLOR}" Name="Ellipse"
         Margin="5" Height="40" Width="40" 
         Stroke="Black" StrokeThickness="5">
</Ellipse>

两种方案都不需要修改后台C#构造函数代码,修改后即可实现选中ComboBox颜色同步填充Ellipse的效果。

内容的提问来源于stack exchange,提问作者TdW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 16:06:04