如何使用颜色选择器更改边框背景

时间:2010-08-13 09:12:52

标签: wpf xaml data-binding user-controls

我有一个xaml资源文件,其中包含一些DataRemplate s的定义。在一个DataRemplate中,我的边框背景绑定到其DataObject的属性。

我还有一个ColorPicker用户控件,它是边框ContextMenu的一部分。

现在我正在尝试将ColorPicker的依赖项属性“CustomColor”绑定到边框的颜色/背景属性。怎么做?

我是否必须绑定到边框的“背景”属性或数据对象的“颜色”属性?

<Border x:Name="projectRect"
        Grid.Column="1"
        Grid.ColumnSpan="1"
        HorizontalAlignment="Right"
        Background="{Binding Path=Color, Converter={StaticResource colorConverter}}"
        BorderBrush="#737377"
        BorderThickness="1"
        CornerRadius="4"
        IsHitTestVisible="True">
    <TextBlock Text="{Binding Path=ProjectId}"
               VerticalAlignment="Center"
               Margin="4" />
    <Border.ContextMenu>
        <ContextMenu Name="colorPopup"
                     StaysOpen="True"
                     Style="{StaticResource ColorPickerContextMenuStyle}">
            <Border Background="GhostWhite">
                <local:CustomColorPicker x:Name="cp"
                                         CustomColor="{Binding Path=Color, Converter={StaticResource colorConv}}"
                                         diag:PresentationTraceSources.TraceLevel="High" />
            </Border>
        </ContextMenu>
    </Border.ContextMenu>
</Border>

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

两个属性都应绑定到数据对象中的Color,以确保在ColorPicker更改数据对象需要实现的属性INotifyPropertyChanged时更新边框。

如何进行绑定取决于您的上下文。在大多数情况下,数据对象可以在相应对象的DataContext中找到,但可能不是使用ItemsControls等。有关绑定的一般帮助,请参阅Data Binding Overview