none
WPFでビルドは通るのにXAMLデザイナでエラーになる。 RRS feed

  • 質問

  • ほとほと困っています。

    VS2010でWPFアプリ作成中、XAMLでCommandBindingsを追加するために以下の様に書きました。

    (関係無さそうな部分は省略しています)


    XAML

    <Window x:Class="MyApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MyApp" Title="MyApp" Height="400" Width="300"> <Window.CommandBindings> <CommandBinding Command="{x:Static local:MainWindow.Command1}" CanExecute="Command1_CanExecute" Executed="Command1_Executed"/> </Window.CommandBindings> </Window>


    C#

    namespace MyApp { public partial class MainWindow : Window { public static RoutedCommand Command1= new RoutedCommand(); public void Command1_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } public void Command1_Executed(object sender, ExecutedRoutedEventArgs e) { throw new NotImplementedException(); }


    もともと、別のプロジェクトで動作済みのコードをコピーしてきたので、ビルドも通り、実行しても意図どおりに動くのですが、

    XAMLデザイナで「読み込みで問題が発生しました」と表示され、デザインが表示できなくなってしまうのです。

    エラー一覧には、XAMLの7行目に対し、「型'local:MainWindow’は見つかりませんでした。」というエラーが発生しており、確かにその行をコメントアウトすればエラーは消えるのですが、気持ち悪いです。

    コードビハインドでCommandBindingする手もありますが、この現象の原因がわかる方がいましたらアドバイスお願いします。

    • 移動 星 睦美 2013年8月27日 0:15 Visual C# から
    2013年8月24日 11:39

回答

  • 直接的な回答ではありませんが、Visual StudioのXAMLデザイナーは、経験上、完璧ではないようです。以下のように解決できる場合もありますが、そうでない場合もあります。

    WPF デザイナ読み込みエラーのトラブルシューティング
    http://msdn.microsoft.com/ja-jp/library/bb546934(v=vs.90).aspx

    個人的にはコンパイルが通ればよしとしていますし、Visual StudioのXAMLデザイナーがこける場合にはBlendを使います。

    (私の場合の例)
    ■[WPF] CallMethodActionを継承したBehaviorを指定するとVisual Studio 2010のXAMLデザイナで例外が発生する
    http://d.hatena.ne.jp/trapemiya/20101001

    VS2012のXAMLデザイナーはVS2010のそれより進歩していますし、それに期待しながら付き合っていくしかないと個人的に思っています。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 星 睦美 2013年8月29日 4:47
    2013年8月27日 0:23
    モデレータ
  • 自己レスです。

    下記の様なページを見つけ、x64をx86に変更したところ、その半日後くらいにエラーは出なくなりました。

    片鱗懐古のブログ wpf : x64でxamlを編集するとデザイナがごねる

    エラー中はVS2010でなくVS2012でプロジェクトを開いても、エラーメッセージは変わるものの似たような状態だったので、この周辺のバグはまだ治ってないと言うことなのでしょうかね。

    もっとも、他にもコードの変更などを行っていたので、上記が直接の原因だったのかは検証しておりませんが。

    • 回答としてマーク 星 睦美 2013年8月29日 4:47
    2013年8月26日 14:17

すべての返信

  • 自己レスです。

    下記の様なページを見つけ、x64をx86に変更したところ、その半日後くらいにエラーは出なくなりました。

    片鱗懐古のブログ wpf : x64でxamlを編集するとデザイナがごねる

    エラー中はVS2010でなくVS2012でプロジェクトを開いても、エラーメッセージは変わるものの似たような状態だったので、この周辺のバグはまだ治ってないと言うことなのでしょうかね。

    もっとも、他にもコードの変更などを行っていたので、上記が直接の原因だったのかは検証しておりませんが。

    • 回答としてマーク 星 睦美 2013年8月29日 4:47
    2013年8月26日 14:17
  • SHEN13 さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    コミュニティの回答者からの返信はないようですが、ご自身で検証された結果をお知らせいただきましてありがとうございます。スレッドの内容はフォーラムで役立つと思います。

    情報をお探しの方の目にもとまりやすくなるように、こちらのスレッドは私のほうでWPFフォーラムに移動させていただきますね。

    それでは今後ともMSDN フォーラムをよろしくお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2013年8月27日 0:15
  • 直接的な回答ではありませんが、Visual StudioのXAMLデザイナーは、経験上、完璧ではないようです。以下のように解決できる場合もありますが、そうでない場合もあります。

    WPF デザイナ読み込みエラーのトラブルシューティング
    http://msdn.microsoft.com/ja-jp/library/bb546934(v=vs.90).aspx

    個人的にはコンパイルが通ればよしとしていますし、Visual StudioのXAMLデザイナーがこける場合にはBlendを使います。

    (私の場合の例)
    ■[WPF] CallMethodActionを継承したBehaviorを指定するとVisual Studio 2010のXAMLデザイナで例外が発生する
    http://d.hatena.ne.jp/trapemiya/20101001

    VS2012のXAMLデザイナーはVS2010のそれより進歩していますし、それに期待しながら付き合っていくしかないと個人的に思っています。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 星 睦美 2013年8月29日 4:47
    2013年8月27日 0:23
    モデレータ
  • 今回は同様の問題に、SHEN13 さんとtrapemiya さんの返信が参考になると思いますので、私のほうで[回答としてマーク] させていただきました。

    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2013年8月29日 4:52