簡體   English   中英

使用IValueConverter將可見性綁定到哈希碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM