我正在努力让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; }
答案 0 :(得分:2)
不要绑定到PopupColorEdit.Text
。 Bind 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
上的其他绑定将会无法知道任何改变。