かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Windows Phone 7.1 SDKの環境でIDataErrorInfoを使うとデザイナがエラーを吐いて使えない

Windows Phone SDKを入れたVisual StudioでIDataErrorInfoを使ってるViewModelをXAMLでDataContextに指定したりするとデザイナがエラーを吐いて使えなくなります。再現手順は以下の通り。

IDataErrorInfoを継承したクラスを作る

using System.ComponentModel;

namespace IDataErrorInfoDesignTimeErrorSample
{
    public class SampleViewModel : IDataErrorInfo
    {
        #region IDataErrorInfo メンバー

        public string Error
        {
            get { return ""; }
        }

        public string this[string columnName]
        {
            get { return ""; }
        }

        #endregion
    }
}

MainPageのDataContextに上記のクラスを設定する

<phone:PhoneApplicationPage 
    x:Class="IDataErrorInfoDesignTimeErrorSample.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    xmlns:local="clr-namespace:IDataErrorInfoDesignTimeErrorSample"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
    <!-- DataContextの設定 -->
    <phone:PhoneApplicationPage.DataContext>
        <local:SampleViewModel />
    </phone:PhoneApplicationPage.DataContext>
    ...中略...
</phone:PhoneApplicationPage>

デザイナーがエラーを吐く

皆同じ??

SkyDriveにプロジェクトを置いておくので、私の環境の問題なのか、それとも皆なるのか追試をお願いできないでしょうか?
IDataErrorInfoDesignTimeErrorSample.zip

Connectに登録してみました

もし、追試して頂いて同じエラーが出たなら下記のConnectの内容にぽちっと再現できたというボタンを押していただけると嬉しいです。
Windows Phone 7.1 SDKでIDataErrorInfoを継承したクラスをXAMLで宣言するとデザイナがエラーを吐く