此处WPF
和c#
非常新。我有兴趣让ComboBox
使用不同的颜色选项,以便在选择选项时更新窗口Background
。
我希望通过DataBinding
执行此操作,但我是一个菜鸟,无法做到正确。这就是我所拥有的。
MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Background="{Binding SelectedValue,ElementName=combo,UpdateSourceTrigger=PropertyChanged}">
<StackPanel>
<ComboBox Name="combo">
<ComboBoxItem>lightcoral</ComboBoxItem>
<ComboBoxItem>khaki</ComboBoxItem>
</ComboBox>
</StackPanel>
</Window>
默认MainWindow.xaml.cs
(自创建项目以来,我还没有触及它)
谢谢,如果您需要更多信息,请与我联系!
答案 0 :(得分:3)
实现此目的的一种可能方法是将类型string
的项放入ComboBox,而不是ComboBoxItem
:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Background="{Binding SelectedItem, ElementName=combo}">
<ComboBox VerticalAlignment="Center" HorizontalAlignment="Center" x:Name="combo">
<sys:String>Yellow</sys:String>
<sys:String>Green</sys:String>
<sys:String>Red</sys:String>
<sys:String>Blue</sys:String>
</ComboBox>
</Window>
请注意,我声明xmlns:sys
XAML Namespace指向mscorlib.dll程序集中的System
CLR命名空间。这是定义类System.String
的地方,您需要能够在XAML中使用该类。
另请注意,我与SelectedItem
绑定而不是SelectedValue
,这是因为您的ComboBox没有SelectedValuePath
,而且WPF没有SelectedValue
。 t具有UpdateSourceTrigger
的概念,因为它不知道如何&#34;检索值&#34;来自每个项目。
另请注意,UpdateSourceTrigger
已删除,因为它没有任何意义。 String
确定更新Binding 源的方式,而不是目标。请阅读MSDN上的DataBinding以了解此处的术语。
使用ComboBoxItem
工作并使用Brush
的原因不是因为string
类的默认Type Converter(这是窗口的背景)&#34;了解&#34;如何转换ComboBoxItem
,而不是转换为{{1}}。