在庫管理用のウィザードUIを作成したい。xamlの関連する行は次のとおりです。
<ContentPresenter Content="{Binding Current}" ContentTemplateSelector="{StaticResource inventorySelector}"/>
「現在」は、現在アクティブなビューモデルであり、AvailableInventoriesViewModel、GroupsViewModel、NewArticlesViewModel、ResultViewModelのいずれかです。私がそのように定義したDataTemplateSelector:
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using Centron.WPF.WarehousingExtension.InventoryModule.ViewModels.WizardViewModels;
namespace Centron.WPF.WarehousingExtension.InventoryModule.UI.DataTemplateSelectors
{
public class InventoryDatatemplateSelector : DataTemplateSelector
{
public DataTemplate AvailableDatatype { get; set; }
public DataTemplate GroupsDatatype { get; set; }
public DataTemplate NewDatatype { get; set; }
public DataTemplate ResultDatatype { get; set; }
public InventoryDatatemplateSelector()
{
Debug.WriteLine("");
}
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is AvailableInventoriesViewModel)
return AvailableDatatype;
else if (item is GroupsViewModel)
return GroupsDatatype;
else if (item is NewArticlesViewModel)
return NewDatatype;
else return ResultDatatype;
}
}
}
次に、次のようなDataTemplatesとSelectorのインスタンスを作成します。
<base:InventoryViewBase.Resources>
<DataTemplate DataType="viewModels:AvailableInventoriesViewModel" x:Key="availableInventoriesDatatype">
<controls:AvailableInventoriesView />
</DataTemplate>
<DataTemplate DataType="viewModels:GroupsViewModel" x:Key="groupsDatatype">
<controls:GroupsView />
</DataTemplate>
<DataTemplate DataType="viewModels:NewArticlesViewModel" x:Key="newArticlesDatatype">
<controls:NewArticlesView />
</DataTemplate>
<DataTemplate DataType="viewModels:ResultViewModel" x:Key="resultDatatype">
<controls:ResultView/>
</DataTemplate>
<selector:InventoryDatatemplateSelector
x:Key="inventorySelector"
AvailableDatatype="{StaticResource availableInventoriesDatatype}"
GroupsDatatype="{StaticResource groupsDatatype}"
NewDatatype="{StaticResource newArticlesDatatype}"
ResultDatatype="{StaticResource resultDatatype}"/>
</base:InventoryViewBase.Resources>
InventoryDatatemplateSelectorのコンストラクターにブレークポイントを設定し、それをステップスルーできますが、次のデバッグステップで、明らかにそのセレクターインスタンスの最初のプロパティを設定しようとすると、すぐに内部例外を含む例外が発生します。
\"availableInventoriesDatatype\"という名前のリソースが見つかりません。リソース名では大文字と小文字が区別されます。
取引は何ですか、明確に定義されているのにリソースが見つからないのはなぜですか?