代码之家  ›  专栏  ›  技术社区  ›  Scott

Silverlight-绑定到枚举属性

  •  0
  • Scott  · 技术社区  · 14 年前

    我有一个绑定到ViewModel的文本框。文本框的TextWrapping属性绑定到我的视图模型上名为DocViewerWrapText的属性。这是我的财产-忽略关于打开和关闭scollbar的细节。

     public string DocViewerWrapText
    {
      get { return _docViewerWrapText; }
      set
      {
        _docViewerWrapText = value;
    
        if (_docViewerWrapText == "Wrap")
          ShowDocViewerHorizontalScrollBar = "Disabled";
        else ShowDocViewerHorizontalScrollBar = "Auto";
        NotifyPropertyChanged("ShowDocViewerHorizontalScrollBar");
        NotifyPropertyChanged("DocViewerWrapText");
      }
    }
    

    这段代码实际上工作得很好,但它抛出了一个First-Chance异常,如下所示:

    System.Windows.Data Error: 'MS.Internal.Data.DynamicValueConverter' converter failed to convert value 'NoWrap' (type 'System.String'); BindingExpression: Path='DocViewerWrapText' DataItem='UnityEca.ViewModels.HomeViewModel' (HashCode=41697354); target element is 'Telerik.Windows.Controls.RadToggleButton' (Name='docViewerWrapText'); target property is 'IsChecked' (type 'System.Nullable`1[System.Boolean]').. System.FormatException: String was not recognized as a valid Boolean.
    

    我试过将属性转换为布尔值,但得到的错误类型相同。我还查看了TextWrapping枚举的实际枚举。值是1和2,所以我不知道如何在这里使用布尔值。

    有人能告诉我在XAML中绑定到这样的枚举的正确方法吗?

    谢谢,

    -斯科特

    1 回复  |  直到 14 年前
        1
  •  1
  •   Scott    14 年前

    我发现了问题。我需要更改属性getter/setter以返回正确的枚举类型。令我困惑的是布尔错误。原来是我在窗体上用一个按钮来切换文本换行值。我将它绑定到同一个属性,因此它无法从枚举值转换为布尔值。

    现在我只需要找出如何转换这些值。

    -斯科特