越來越怪異值我已經安裝綁定,如下WPF轉換器從綁定
XAML
<TextBlock Text="{Binding Path=Color, Converter={StaticResource ColorToStringConverter}}" />
C#:顯示什麼Color
是
public System.Windows.Media.Color Color
{
get
{
var color = new HSLColor { Hue = this.Hue, Saturation = this.Saturation, Luminosity = this.Luminosity };
string strColor = color.ToRGBString();
return new System.Windows.Media.Color {
R = byte.Parse(strColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
G = byte.Parse(strColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
B = byte.Parse(strColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
};
}
set { SetValue(ColorProperty, value); }
}
轉換
public class ColorToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Color color = (Color)value;
return color.ToString();
}
}
但我的轉換越來越value
像
value = "{Name=0, ARGB=(0, 0, 0, 0)}"
我希望它是一個System.Windows.Media.Color
爲什麼我得到這個?
基本上,我有3個Silders爲HSL值綁定到DependencyProperties
,每一個都具有PropertyChangedCallback
連接到它們
new PropertyChangedCallback(HSLValuePropertyChanged)
它看起來像
protected void HSLValueChanged()
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Color"));
}
基本上其目的是更新綁定到控制依賴項屬性Color
。這個想法是get
應該爲屬性Color
運行,它從HSL屬性創建一個新的顏色。看起來問題在於,即使我更改HSL值,get也不會運行。
UPDATE
於是,我就在一個異常的情況下,只需value
回來,我什麼都沒有在文本框中,所以我也value.toString()
得到了Color [Empty]
所有的時間。我做錯了什麼?
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
Color color = (Color)value;
return color.ToString();
} catch (Exception) {
return value.ToString();
}
}
你的意思是調用'color.ToString()'產生字符串'「{Name = 0,ARGB =(0,0,0,0)}''? – 2010-11-04 13:20:45
@Steve Greatrex,我不確定是否會自動調用toString()?當我嘗試將文本框綁定到Color而沒有轉換器時,我什麼也沒有,根本沒有這樣的文本,所以我想也許我需要一個轉換器 – 2010-11-04 13:25:46
@jiewmeng,如果你綁定到一個類型時忽略了'ToString()'調用'TextBlock',它會自動被調用。如果你在你的'Convert'方法中放置了一個斷點,那麼'value'是你期望的 - 一個具有正確值的'System.Windows.Media.Color'的實例?如果沒有,我建議單步穿過你的Color屬性獲取器,看看它創建了什麼 – 2010-11-04 13:28:34