0

我有一些颜色选择器的代码:

<xctk:ColorPicker Grid.Row ="10" Grid.ColumnSpan="2" Margin="5, 5, 5, 5" Height="30" DisplayColorAndName="True"
                          SelectedColor="{Binding SelectedItem.TransparentColor, ElementName=ItemsListBox, Converter={StaticResource BrushColorConverter}, Mode=TwoWay}"/>

这些东西在绑定到 ElementName=Window 和 Path=Background 时有效,但是当我使用属性 System.Windows.Media.Color 创建对象时,它显示

Value produced by BindingExpression is not valid for target property.; Value='<null>' BindingExpression:Path=SelectedItem.TransparentColor; DataItem='ListBox' (Name='ItemsListBox'); target element is 'ColorPicker' (Name=''); target property is 'SelectedColor' (type 'Color')

属性 TransparentColor 是新对象( new System.Windows.Media.Color() )......我应该怎么做才能让它工作?

其他的东西,比如:

<TextBox Grid.Column="7" Text="{Binding SelectedItem.ForbiddenArea.Height, ElementName=ItemsListBox, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

作品...

4

1 回答 1

0

这很容易解决:首先我从 System.Windows.Media 声明了可为空的颜色

Color? TransparentColor { get; set; }

并且在没有转换器的情况下绑定到这个属性:

<xctk:ColorPicker Grid.Row ="12" Grid.ColumnSpan="2" Height="30" DisplayColorAndName="True"
                          SelectedColor="{Binding TransparentColor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                          IsEnabled="{Binding ElementName=GlobalTransparencyFlag, Path=IsChecked}"/>
于 2013-01-25T20:25:21.610 回答