【发布时间】:2015-06-29 12:07:28
【问题描述】:
最后(我希望)跟进this 问题 -
我想将此用户控件的 Color 属性绑定到将传播到其他几个控件的用户设置属性。
我已经在代码(准确地说是 XAML)中做到了这一点,但是对用户控件所做的更改不会传播到应该接收它们的控件。
过去我见过这项工作(使用简单的滑块控制边框宽度):但是,这不起作用。这是有问题的 XAML。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:S="clr-namespace:EQLControls.Properties"
xmlns:Components="clr-namespace:WPFTools.Components;assembly=WPFTools"
xmlns:Converters="clr-namespace:WPFTools.Classes.Converters;assembly=WPFTools"
x:Class="EQLControls.Controls.UCPlayerPanel"
mc:Ignorable="d"
BorderThickness="{Binding PlayerBorderSize}"
FontFamily="{Binding PlayerFontFamily}"
FontWeight="{Binding PlayerFontWeight}"
Height="50" Width="100">
<UserControl.Background>
<LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
<GradientStop Color="{Binding PlayerBGColor1}"/>
<GradientStop Color="{Binding PlayerBGColor2}" Offset="1"/>
</LinearGradientBrush>
</UserControl.Background>
<UserControl.BorderBrush>
<SolidColorBrush Color="{Binding PlayerBorderColor}"/>
</UserControl.BorderBrush>
<UserControl.DataContext>
<S:Settings/>
</UserControl.DataContext>
我有一个控件绑定来控制项目中设置(双向绑定)的 PlayerBGColor1 和 PlayerBGColor2,但是所做的更改并没有反映(立即,无论如何)对应该从控件接收这些更改的用户控件.
这是用于在 UserSettings 中处理 PlayerBG1 和 PlayerBG2 颜色的控件绑定的 XAML:
<Controls:ColorDefiner Color="{Binding PlayerBGColor2, Mode=TwoWay}" Width="Auto" Height="Auto"/>
<Controls:ColorDefiner Color="{Binding PlayerBGColor1, Mode=TwoWay}" Width="Auto" Height="Auto"/>
我在这里努力实现的目标是否可行,或者我需要找到其他方法来实现这一目标?
【问题讨论】:
-
两个控件是否共享同一个 DataContext 实例?
-
PlayerBGColor1和PlayerBGColor2属性是否通知更改,即它们是否引发 PropertyChanged 事件? -
@jhenninger24 他们是——他们是继承 ApplicationSettingsBase 类的类的一部分。
标签: c# wpf xaml data-binding settings