6

WPF (4 以降) と Silverlight (4 以降) をサポートしたい VS 2010 プロジェクトで PCL を試しています。以下のMS ドキュメントの抜粋は、私にとって混乱を招きます。

PCL プロジェクトで System.Windows を参照するように言っているようですが、その方法がわかりません。

PCL プロジェクトで ICommand と INotifyPropertyChanged を使用するにはどうすればよいですか?

ビュー モデル パターンのサポート Silverlight と Windows Phone 7 を対象とする場合、ソリューションにビュー モデル パターンを実装できます。このパターンを実装するクラスは、Silverlight の System.Windows.dll アセンブリにあります。.NET Framework 4 または Xbox 360 を対象とするポータブル クラス ライブラリ プロジェクトを作成する場合、System.Windows.dll アセンブリはサポートされません。

このアセンブリのクラスには、次のものが含まれます。

System.Collections.ObjectModel.ObservableCollection

System.Collections.ObjectModel.ReadOnlyObservableCollection

System.Collections.Specialized.INotifyCollectionChanged

System.Collections.Specialized.NotifyCollectionChangedAction

System.Collections.Specialized.NotifyCollectionChangedEventArgs

System.Collections.Specialized.NotifyCollectionChangedEventHandler

System.Windows.Input.ICommand

.NET Framework 4 にもこれらのクラスが含まれていますが、System.Windows.dll 以外のアセンブリに実装されています。これらのクラスをポータブル クラス ライブラリ プロジェクトで使用するには、.NET Framework 4 ドキュメントにリストされているアセンブリではなく、System.Windows.dll を参照する必要があります。

編集

INotifyPropertyChanged は利用できません。以下のコードはコンパイルされません

    public abstract class ViewModelBase : INotifyPropertyChanged
{
    public virtual event PropertyChangedEventHandler PropertyChanged;

    ...

}
4

1 に答える 1

2

はい、MSDN はこの点で混乱しています (エラーはありますか?)

基本的に、あなたは何もしません!

PCL プロジェクトを作成するときは、適切なフレームワークを選択するだけです。 新しい pcl プロジェクト

PCL は参照を自動的に管理します。

 public abstract class ViewModelBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }
    }

やってみよう !

于 2013-05-02T14:40:11.720 に答える