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で宣言するとデザイナがエラーを吐く