ぱらつり記

No description

TextBoxへのバインディング

System.Windows.Data Error: 1 : Cannot create default converter to perform 'two-way' conversions between types 'System.Version' and 'System.String'. Consider using Converter property of Binding. BindingExpression:Path=OSVersion; DataItem='EnvironmentInfo' (HashCode=55269580); target element is 'TextBox' (Name=''); target property is 'Text' (type 'String') System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='6.1.7601.65536' BindingExpression:Path=OSVersion; DataItem='EnvironmentInfo' (HashCode=55269580); target element is 'TextBox' (Name=''); target property is 'Text' (type 'String')

こんな感じでVersionオブジェクトをバインドしようとしたら怒られました。

<TextBox IsReadOnly="True" Text="{Binding OSVersion}"/>

ここでポイントとなるのは、Modeを明示しないとバインディングモードはBindingMode.Default設定されること。

ご覧のとおり、テキストボックスへバインドしようとしていますが、このコントロールの既定のモードはTwoWayなのです。

Version -> stringへ変換できても、string -> Versionへの変換はできませんね。

<TextBox IsReadOnly="True" Text="{Binding OSVersion, Mode=OneWay}"/>

BindingModeを明示してやって解決。