1

Caliburn と次のコードを使用してコンボボックスをバインドしようとしています:

yyyView.xaml

 <ComboBox x:Name="Filters"></ComboBox>

yyyViewModel.xaml

private string selectedFilter;

public BindableCollection<string> Filters
{
    get
    {
        return new BindableCollection<string>(
                 new string[]{ "All", "Last Month", "Last Week", "Yesterday" });
    }
}

public string SelectedFilter
{
    get { return selectedFilter; }
    set
    {
        selectedFilter = value;
        NotifyOfPropertyChange(() => SelectedFilter);
    }
}

このコードを使用すると、GetInstanceメソッドのApp.xaml.csArgumentNullExceptionが発生します。

私はMVVM、Caliburn、およびXAMLを初めて使用しますが、WinRT開発でドロップされたある種の動作( Blend Behaviorsだと思います)がどこかで読んだことがあります。

それが問題ですか?どうすればこれを解決できますか?

ありがとうございました

編集:

App.xaml.cs

protected override void Configure()
{
    LogManager.GetLog = type => new DebugLogger(type);
    container = new WinRTContainer();
    container.RegisterWinRTServices();
    container.PerRequest<aaaViewModel>();
    container.PerRequest<xxxViewModel>();
    container.PerRequest<yyyViewModel>();
    container.PerRequest<zzzViewModel>();
}

App.xaml

<caliburn:CaliburnApplication
    x:Class="yyyStoreApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:yyyApp"
    xmlns:caliburn="using:Caliburn.Micro"
    xmlns:converters="using:yyyApp.Converters"
    RequestedTheme="Light">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources/CustomStyles.xaml" />
                <ResourceDictionary Source="Resources/StandardStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <converters:ImageFilePathConverter x:Key="ImageFilePath"/>
        </ResourceDictionary>
    </Application.Resources>
</caliburn:CaliburnApplication>
4

1 に答える 1

1

Configure実装のメソッドオーバーロードにビューモデルを登録していない可能性がありますAppWinRTドキュメントのコードの// TODO部分をご覧ください。App

これは明らかに意図された動作ですが、CodePlexのディスカッションフォーラムと課題追跡システムで見られるように、混乱を引き起こしています。ここここ、およびここを参照してください。

Configure基本的に、メソッドに次の行を追加するだけで、うまくいくはずです。

container.PerRequest<yyyViewModel>();
于 2013-03-18T17:57:32.987 に答える