2017-05-30 68 views
1

我想讓colorpicker爲我的程序工作,並且在保持重新初始化的價值時遇到了問題。我想知道如果我失去了一些東西或者popupcoloredit初始化覆蓋了這個值。在viewmodel初始化時,它保留了我所擁有的字符串和布爾值,但是顏色被重置,而不會調用setter,所以我認爲它被銷燬了。與Popupcoloredit工作綁定

我的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

你使用了什麼顏色類? 'System.Windows.Media.Color'或者'System.Drawing.Color'? –

+1

@EdPlunkett在兩者都嘗試過。兩者都不起作用。 –

+1

查看更新。得到它的工作。 –

回答

2

不綁定到PopupColorEdit.TextBind to PopupColorEdit.Color。並且因爲它是DevExpress,所以一直在尋找他們忽略在依賴屬性上設置BindsTwoWaysByDefault = true的習慣。這是一個這樣的屬性。默認情況下,PopupColorEditColor屬性不會更新您綁定的屬性。這從來都是正確的,但它是它的默認配置。

<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當變化或者與其他的綁定值,在TextBox,將無法知道任何改變。

+0

工作完美,非常感謝! –

+0

很高興工作。 –