💬
WPF開発時のトラブルシューティング
この記事について
概要
WPF開発時につまづいた点と、その対処方法を記録しておく。
対象読者
- WPF開発をしている人
使用する開発環境
- Microsoft Visual Studio Community 2022
プロジェクト全般
エラー「MC6029」が発生する
現象
プロジェクト生成直後にビルドすると以下のエラーが発生する。
エラーメッセージ
エラー MC6029 '[プロジェクト名]' 名は、既定の名前空間 '[プロジェクト名]' では無効です。プロジェクト ファイル内の RootNamespace タグの値を修正してください。 [プロジェクト名] C:\Program Files\dotnet\sdk\6.0.400\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.WinFX.targets 223
原因
プロジェクト作成時に、プロジェクト名にnamespaceに使用できない文字が含まれていて、自動的に使用できる文字に置換されてしまったため。
対処法
- App.xaml.csを開いてnamespace名を確認する。
App.xaml.cs
using System.Windows;
namespace ★置換されたnamespace名★
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
- [プロジェクト名].csprojに<RootNamespace></RootNamespace>タグを作成して、調べたnamespaceを記述する。
[プロジェクト名].csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
+ <RootNamespace>★ここに置換されたnamespace名を記述★</RootNamespace>
</PropertyGroup>
</Project>
XAML系
「'***'のバインドでDataContextが見つかりません」というメッセージが表示される
現象
デザイナーでXAMLファイルを編集中に「'***'のバインドでDataContextが見つかりません」というヒントメッセージが表示される。
原因
デフォルト状態ではDataContextが設定されていないため。
対処法
以下の通りDataContextを設定する。
*.xaml
<Window
x:Class="[クラス名]"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
+ xmlns:viewmodels="clr-namespace:[ViewModelsのnamespace名]"
Title="{Binding Title}"
Width="1280"
Height="800"
+ d:DataContext="{d:DesignInstance Type=viewmodels:[ViewModel名]}"
- prism:ViewModelLocator.AutoWireViewModel="True">
+ prism:ViewModelLocator.AutoWireViewModel="True"
+ mc:Ignorable="d">
<Grid>
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</Grid>
</Window>
Discussion