请原谅我的无知。我是vb.net和WPF的新手。我有一个comboBox,它有一个像这样的颜色列表。顺便说一下,这是在WPF中。
Public Sub New()
InitializeComponent()
cmbColors.ItemsSource = GetType(Colors).GetProperties()
End Sub
在XAML中,comboBox的创建方式如下:
<ComboBox Name="cmbColors" HorizontalAlignment="Left" Margin="29,35,0,0"
Grid.Row="1" VerticalAlignment="Top" Width="120">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Fill="{Binding Name}" Width="16" Height="16"
Margin="0,2,5,2"/>
<TextBlock x:Name="cmbColorsText" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我要做的是当程序运行时以灰色的开始背景颜色开始,并且当从组合框中选择新的背景颜色时,背景将更新。 这是我试图绑定到选择的元素的XAML。
<Border BorderBrush="{x:Null}" Grid.Column="1" Grid.Row="1" Background="{Binding Text, ElementName=cmbColors}">
<TextBlock Text="PRACTICE" Style="{StaticResource linkButtons}"/>
我已经浏览了属性窗口中的每个(字符串)类型的边框&gt;背景&gt;创建绑定&gt;元素&gt; comboBox,由于某种原因(我无法确定)我错过了相应的或正在寻找这是错误的方式。
提前谢谢!!!
答案 0 :(得分:0)
您正在将Background
绑定到字符串,但背景将需要ColorBrush。因此,如果您的组合ItemsSource
已经包含ColorBrush的项目,那么您只能绑定到SelectedItem
而不是Text
。
或者您可以在后台绑定中使用转换器,它接受字符串并返回SolidColorBrush
,比方说。
答案 1 :(得分:0)
将绑定更改为
<Border BorderBrush="{x:Null}" Grid.Column="1" Grid.Row="1" Background="{Binding SelectedItem.Name, ElementName=cmbColors}">
<TextBlock Text="PRACTICE" Style="{StaticResource linkButtons}"/>
ComboBox的Text属性返回PropertyInfo对象的ToString()方法的结果,例如,如果选择Black,它将是“System.Windows.Media.Color Black”,并且不会解析为有效颜色。