绑定使用Popupcoloredit

时间:2017-05-30 16:58:23

标签: c# wpf xaml devexpress

我正在努力让colorpicker为我的程序工作,而我却无法保持重新初始化的价值。我想知道我是否遗漏了某些东西,或者popupcoloredit初始化是否覆盖了该值。在viewmodel初始化它保持字符串和bools我有,但颜色被重置没有setter被调用所以我认为它被摧毁。

我的XAML如下:

<TextBlock Text="{x:Static meta:MetaCommon.Text}" Style="{StaticResource ContentHeader}" TextWrapping="Wrap" />
<dxe:PopupColorEdit Name="TextColour" Text="{Binding TextColour}" MinWidth="130" Margin="0,0,0,10" />

然后我在文本框中使用它

<TextBox Text="Sample text..." Margin="0,0,0,10" Name="TextBox1"
     Foreground="{Binding Path=Color, ElementName=TextColour, Converter={StaticResource ColorToBrushConverter}}"
     Background="{Binding Path=Color, ElementName=BackgroundColour, Converter={StaticResource ColorToBrushConverter}}" />

C#只是一个集合

public static Color TextColour { get; set; } 

1 个答案:

答案 0 :(得分:2)

不要绑定到PopupColorEdit.TextBind to PopupColorEdit.Color。而且因为它是DevExpress,所以总是要注意他们忽视在依赖属性上设置BindsTwoWaysByDefault = true的习惯。这是一个这样的财产。默认情况下,Color的{​​{1}}属性永远不会更新绑定到它的属性。这大概都是正确的,但它是它们随附的默认值。

PopupColorEdit

您的viewmodel属性必须是<dxe:PopupColorEdit Name="TextColour" Color="{Binding TextColour, Mode=TwoWay}" MinWidth="130" Margin="0,0,0,10" /> ,而不是System.Windows.Media.Color

System.Drawing.Color

最后,您必须在视图模型中正确实施public static System.Windows.Media.Color TextColour { get; set; } ,并在INotifyPropertyChanged的值发生变化时提升PropertyChanged,否则TextColour上的其他绑定将会无法知道任何改变。