■No103607 (ALPHA さん) に返信
> 実行をかけリボンコンボボックスに適当な文字を入力した状態でリボンコンボボックスをマウスで右クリックすると
> System.InvalidOperationException: ''RibbonSeparator' TargetType は、要素 'Separator' の型と一致しません。'
> ハンドルされていない例外が発生します
> エラーが発生個所も原因も判らず停滞しております。
> 何かしらのご助言、ご指摘がございましたらよろしくお願い致します。
>
.NET7 はすでにサポートが切れて久しい(一年近く前にサポート終了)ので
VS2022 v17.13.5 + .NET9 な WPF アプリで試してみました(ちょうど手を入れても問題ないコードがあったので)。
同じように、文字列を入力した状態で、右クリックするとライブラリ内部で同じ例外が発生しました。
原因はたどってないのでわかりませんが、内部的な不具合がずっと残ったままなのではないかと。
(実装当初とほかの部分が変わってエラーが出るようになった可能性もあります)
.NET 側にIssueがあればと思って、見てみましたが、GitHub のWPFのところに
今まで修正されていないとすると、そもそもリボンのコンボを IsEditable="True" で
使っている人がいなかったか何かしらデータがバインドされていれば問題がないのかもしれません(未確認)。
(少なくとも GitHub のIssueを RibbonComboBox で検索した範囲では出てきませんでした)
雑ですが、RibbonComboBoxの代わりにこんな感じで貼ってみたら例外は出なくなりました。
<RibbonGroup Header="RibbonGroup1">
<WrapPanel Orientation="Horizontal">
<Label Content="ラベル" />
<ComboBox IsEditable="True" ItemsSource="{Binding ComboItems}" Width="96" />
</WrapPanel>
</RibbonGroup>
ただしコンボのドロップダウンなどは多分変わるのでどうなの?という感じです。
逆にコンボのドロップダウンの感じを見ると IsEditable がどうなの?というのもあって
もしかしたら昔からこの辺りはちょっとくせのある問題だったのかもしれません。
とはいえ、kikuさんが貼っていたリンク先にも書かれていますが
個人的にはWPF標準のRibbonはお勧めできません。
サポートの話はともかく、見た目の乖離が大きく今どき環境だと
ほかのアプリと見比べてしまう分余計にどうなの?という感じになります。
個人的には、リボンを使うなら Fluent.Ribbon などの外ぶらりぶらりに頼るのが良いと思います。
より今風の Fluent UI を導入しよう!というのであれば、.NET9以上にして
WPF標準のFluentUIを導入するのが良いかもしれません(今の時点で使えるかはありますが)。
・WPF for .NET 9 の新機能
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/whats-new/net90?WT.mc_id=DT-MVP-32182&view=netdesktop-9.0
WPF の FluentUI は出てきたばかりでまだいくつか不具合があるので、微妙なところもありますが
.NET10の頃には修正されているだろうと期待しているので(あと半年くらい)
まぁまぁ問題は少ないかな?と思います。
|