2010-11-27 10 views
0

私は自分のViewModelにバインドされているTextBoxを持っています。 TextBoxのTextWrappingプロパティは、DocViewerWrapTextというビューモデルのプロパティにバインドされています。ここに私の財産があります - スカルバのオン/オフについてのビットを無視してください。Silverlight - Enumプロパティへのバインド

public string DocViewerWrapText 
{ 
    get { return _docViewerWrapText; } 
    set 
    { 
    _docViewerWrapText = value; 

    if (_docViewerWrapText == "Wrap") 
     ShowDocViewerHorizontalScrollBar = "Disabled"; 
    else ShowDocViewerHorizontalScrollBar = "Auto"; 
    NotifyPropertyChanged("ShowDocViewerHorizontalScrollBar"); 
    NotifyPropertyChanged("DocViewerWrapText"); 
    } 
} 

このコードは実際にはうまく動作しますが、以下のように、それは最初のチャンス例外がスローされます。

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のような列挙型にバインドする正しい方法を教えてもらえますか?

おかげで、

-Scott

答えて

1

は私が問題を発見しました。私は適切な列挙型を返すようにpropety getter/setterを変更する必要がありました。私を混乱させる問題はブールエラーでした。それは、私がテキストラッピング値を切り替えるためにフォーム上に持っていたプッシュボタンから来ていたことが分かります。私は同じプロパティにバインドされているので、Enum値からBooleanに変換できませんでした。

これで値を変換する方法を理解する必要があります。

-Scott

関連する問題