VS2022でWPFアプリの開発、ToggleButtonがツールボックスに無いことについて

けんけんけーん 80 評価のポイント
2024-12-13T06:23:47.7666667+00:00

VS2022を使用してWPFアプリケーションの開発を勉強中です。

ツールボックスにToggleButtonコントロールが無いのはなぜなんでしょうか?追加方法がわかるようでしたら教えて頂きたいです。以下は試したことと状況です。

Copilotで聞くと”ツールボックスを右クリックして、アイテムの選択を選び、WPFのカテゴリからToggleButtonを探して追加します。”

ということで追加できそうで実施してみたのですが、上記の手順の最後で"OK"を押すと添付の画面がでてツールボックスには追加されていませんでした。デザイナーで有効にする方法があるようなメッセージですがわかりませんでした。

スクリーンショット 2024-12-13 150733

状況としてはxamlで<ToggleButton>タグは使用できますし、タグを書けばデザイナーにも表示されています。

無い理由や追加方法がわかれば教えていただきたいです。

VS2022 17.12.2

.NET8

WPFUI他いくつかライブラリ追加してます。

よろしくお願いいたします。

Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
103 件の質問
0 件のコメント コメントはありません
{count} 件の投票

承認済みの回答
  1. SurferOnWww 3,531 評価のポイント
    2024-12-14T05:43:27.55+00:00

    勉強をしているだけですので、.Net Framework4.8.1に変更しても問題ないですが、・・・ .NET Framework 4.8.1でプロジェクトを作る方法がわかりませんでした。

    下の画像の赤枠のテンプレートで作ったのだと思いますが、それではなくて青枠の (.NET Framework) と書いてあるテンプレートを使ってください。

    enter image description here

    Windows OS 上で動かす Windows Forms アプリとか WPF アプリを、特に理由がない限り、ターゲットフレームワーク .NET で作るのは止めた方が良いです。

    .NET には、特定の OS に依存する機能は Visual Studio のテンプレートで作るプロジェクトには含まれてないとか(例: GDI+ に依存するグラフィックス機能、エンコーディングの Shift_JIS)、ReportViewer や Chart が使えないとか、データソース構成ウィザードが使えないとか、今回のようにデザイナが不出来という問題とか、乗り越えなければならない壁があります。

    Web アプリですと、ASP.NET Web Forms アプリは全く対応できないという乗り越えられない壁があります。

    「勉強をしているだけ」とのことですが、であればなおさら、それらの壁を乗り越えるのに時間と労力を費やすより、本来勉強すべきことに時間をかけた方が良いのではないでしょうか?

    1 人がこの回答が役に立ったと思いました。

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. gekka 10,561 評価のポイント MVP
    2024-12-13T10:47:27.5166667+00:00

    ツールボックスに追加できてないように見えるのは、.NET8のデザイナーでデザインしようとしているところに、.Net Frameworkのコントロールを使おうとしているからです。
    メッセージに書かれているように、追加されたけど表示されないということです。

    ツールボックスで右クリックして、すべて表示にチェックを入れると、グレイアウトしているけど追加されていることがわかると思います。

    回避方法としては、

    VisualStudioをインストールするときにインストールされるBlend for Visual Studioでプロジェクトを開くと、最初からToggleButtonがツールボックス(Blendではアセット)に表示されます。

    または、プロジェクトファイルに小細工してやると、ツールボックスに追加したToggleButtonが有効状態になります。

    <Project Sdk="Microsoft.NET.Sdk">
    
        <PropertyGroup>
            <OutputType>WinExe</OutputType>
    		
            <!--<TargetFramework>net8.0-windows7.0</TargetFramework>--> <!--こっちになっているはずなので、こっちは無効にして -->
    
            <TargetFrameworks>net48;net8.0-windows7.0</TargetFrameworks> <!--.Net Framework4.8で動作するように見せかけるためにこっちに書き換える (最後のsに注意) -->
    
    

    なぜ初期状態でToggleButtonが使えないのかは謎 (Controls.Primitives以下にあるので、単独で使えないコントロールと間違えてるのかも)


お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。