none
.NET4.6.1にてRibbonComboBoxが選択できなくなる RRS feed

  • 質問

  • お世話になります。

    WPFアプリケーションでRibbonComboBoxのIsEnabledをFalse→Trueに変更するとRibbonComboBoxのドロップダインリストが選択できなくなります。

    .NET 4.6.1がインストールされている環境で発生します。

    OSには依存せず、VisualStudioや.NETのターゲットにも依存しません。

    下記にRibbonComboBoxの実装例を記載します。

    このような問題の情報や問題回避方法をご存知でしたらご教授ください。

    <my:RibbonComboBox Label="ComboBox" Name="ribbonComboBox1" IsEnabled="{Binding ElementName=checkBox1, Path=IsChecked}">
        <my:RibbonGallery MaxColumnCount="1">
            <my:RibbonGalleryCategory>
                <my:RibbonGalleryItem Content="a" />
                <my:RibbonGalleryItem Content="b" />
                <my:RibbonGalleryItem Content="c" />
            </my:RibbonGalleryCategory>
        </my:RibbonGallery>
    </my:RibbonComboBox>
    

    2016年5月27日 8:20

回答

  • RibbonGalleryを継承してIsEnabledCoreプロパティがtrueを返すように変更するととりあえずの回避はできそう。

    public class RibbonGalleryEx : RibbonGallery
    {
        protected override bool IsEnabledCore
        {
            get
            {
                return true;
            }
        }
    }

    あるいは、RibbonGalleryのCommandプロパティを変更するのでも回避できるっぽいです。

    private void RibbonGallery_Loaded(object sender, RoutedEventArgs e)
    {
        RibbonGallery gallery = (RibbonGallery)sender;
        if (gallery.Command == null)
        {
            gallery.Command = ApplicationCommands.NotACommand;
            gallery.Command = null;
        }
    }
    #Commandプロパティに値が無いことを正しく判定できていないバグ?

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク たう 2016年5月31日 1:12
    2016年5月27日 9:46

すべての返信

  • RibbonGalleryを継承してIsEnabledCoreプロパティがtrueを返すように変更するととりあえずの回避はできそう。

    public class RibbonGalleryEx : RibbonGallery
    {
        protected override bool IsEnabledCore
        {
            get
            {
                return true;
            }
        }
    }

    あるいは、RibbonGalleryのCommandプロパティを変更するのでも回避できるっぽいです。

    private void RibbonGallery_Loaded(object sender, RoutedEventArgs e)
    {
        RibbonGallery gallery = (RibbonGallery)sender;
        if (gallery.Command == null)
        {
            gallery.Command = ApplicationCommands.NotACommand;
            gallery.Command = null;
        }
    }
    #Commandプロパティに値が無いことを正しく判定できていないバグ?

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク たう 2016年5月31日 1:12
    2016年5月27日 9:46
  • 返信遅くなり申し訳ありません。

    gekka様、ありがとうございます。

    ご提示いただいた対策で解決できました。

    .NET4.6.2 Previewにて解決できないか確認しましたがダメでした。

    Microsoft Connectに報告しようと思います。

    2016年5月31日 1:12