[英]Bind Visibility to a hashcode using IValueConverter
public class HexToHandSelectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Int64 temp = UInt64.Parse(value, NumberStyles.HexNumber);
if (((Int64)temp & 0x0f) > 0) return Visibility.Collapsed;
else return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我試圖將可見性綁定到包含我正在生成的十六進制代碼的int64依賴項屬性。 該屬性的最大值為0xFFFFFFFFFFFFFFFFFF。 一旦功能已設置了最后4位(最后十六進制字符),則控件應折疊。
代碼可以編譯,但是運行程序時出現InvalidCastException異常。 任何想法或想法將不勝感激。
編輯:我只是意識到轉換器是錯誤的。 控件綁定到的依賴屬性實際上是一個字符串,它表示十六進制數字,該數字將轉換為int64,在必要時進行修改並轉換回字符串。
現在我對Int64有問題temp = UInt64.Parse(value,NumberStyles.HexNumber);
該代碼現在將無法編譯。 字符串到十六進制的轉換雖然在此轉換器之外有效。
您假設值始終為Int64。 您可能要檢查一下。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
long longValue;
try {
longValue = Convert.ToInt64(value);
} catch {
return Visibility.Visible;
}
if ((longValue & 0x0f) > 0) return Visibility.Collapsed;
return Visibility.Visible;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.