【问题标题】:How to set the color/background of an Ellipse with a color chosen via a ComboBox?如何使用通过组合框选择的颜色设置椭圆的颜色/背景?
【发布时间】:2021-09-05 06:49:35
【问题描述】:

这是在窗口后面的代码中

public WpfTestWindow()
{
    InitializeComponent();
    ComboboxCOLOR.ItemsSource = typeof(Colors).GetProperties();
}

这是ComboBox

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

而且 - 在ComboBox 中选择的任何颜色:它应该用该颜色填充这个Ellipse; 下面是我目前得到的,它不起作用......

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

【问题讨论】:

    标签: wpf xaml data-binding combobox


    【解决方案1】:

    您可以在绑定中使用ElementName 引用ComboBox

    获取或设置元素的名称以用作绑定源对象。

    如果您不指定元素名称,绑定标记扩展会将ComboboxCOLOR 解释为Ellipse 元素的当前数据上下文中的属性。然后使用您的示例中的项目的SelectedItem 属性和Name 属性来绑定Fill

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

    【讨论】:

    • 有道理,那个家伙,但它仍然不起作用。当我尝试您的解决方案时,椭圆中的“填充”保持不变。
    • @TdW 请贴出相关的 XAML 代码,其中两个控件都使用了,否则很难确定问题出在哪里以及绑定不起作用的原因。
    • @TdW 显示控件如何关联的 XAML。例如。控件在两个不同的窗口中吗?如果是,那么元素名称绑定当然不起作用。如果它们在同一个 XAML 文件中,组合框是否在椭圆范围内?模板中的控件、用户控件还是其他任何地方的控件?您的问题中两个控件的隔离代码在这方面没有帮助。
    • AYAYAYA,对不起!!!我再次尝试了您的解决方案,现在它可以工作了......不知道为什么它没有第一次尝试,但是......对于正确的答案非常感谢!
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2018-10-13
    • 2021-05-16
    • 2011-02-08
    • 2012-07-18
    相关资源
    最近更新 更多