2

コマンド付きのViewModel( ) があります。UserControlViewModel

public Command PressMeCommand { get; set; }

としても:

#region Implementation of INotifyPropertyChanged


    private File _myfile;
    public File MyFile
    {
        get
        {
            return _myfile;
        }
        set
        {
            value = _myfile;
            OnPropertyChanged("MyFile");
        }
    }

Fileというメソッドを持つクラスはどこにありますかread()

allMyControls ObservableCollection<UserControlViewModel>MainWindow に配置されたボタンにバインドされた別のコマンドを追加しています。次のコードはRootViewModel.csからのものです

private void AddUserControl()
    {
        UserControlViewModel myNewControl = new UserControlViewModel();
        myNewControl.PressMeCommand = new Command(() => OnUserControlPressed(myNewControl ));
        allMyControls.Add(myNewControl );
    }

最後に、新しいコマンドを設定しています:

private void OnUserControlPressed(UserControlViewModel item)
        {

            if (item != null)
            {
                item.MyFile.read();
                Num = item.MyFile.channels.Count;
            }
        }

PressMeCommand に対応するボタンを押すと、「NullReferenceException was unhandled」というエラーが表示されます。私の最初の反応は、ああ、MyFile を初期化していないので、これに移動したというものでした。

private void OnUserControlPressed(UserControlViewModel item)
    {

        if (item != null)
        {
            item.MyFile = new File();
            item.MyFile.read(); //Here is the problem
            Num = item.MyFile.channels.Count;
        }
    }

しかし、問題は解決しません。今、私は完全にアイデアがありません。どうなり得るか?私のプロパティを正しく初期化する方法はMyFile

4

1 に答える 1

1

あなたはvalue = _myfile;プロパティセッターを持っています。もちろん、これを逆にする必要があります。

于 2013-06-04T20:49:08.100 に答える