trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

RadioButtonのチェックがコードからCheckできなくなるバグはWPF4でも未だ直っていないようだ。【その2】

RadioButtonのチェックがコードからCheckできなくなるバグはWPF4でも未だ直っていないようだ。
http://d.hatena.ne.jp/trapemiya/?_ts=1308293087

の続きです。この件に関して、twitterで@frozenlibさんからするどい突込みがありました。引用させていただきます。

@trapemiya ConvertBackが常にparameterを返しているのがマズいんじゃないでしょうか?valueがfalseの時はDependencyProperty.UnsetValueを返すようにすると、ちゃんと動いているように見えます。

問題のコードはこれ。

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return parameter;
        }

確かにfalseの時にparameterを返すのはおかしいですね。そこで、@frozenlibさんが言われる通りに修正。

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
          //  return parameter;

            if ((bool)value)
                return parameter;
            else
                return DependencyProperty.UnsetValue;
        }

すばらしい! 完璧に動いているようです。 というわけで、DependencyProperty.UnsetValueの存在すら気づいていなかった無知の私でした。
@frozenlibさん、ありがとうございました。