gpt4 book ai didi

wpf - 找不到名为 'X' 的资源,为什么?

转载 作者:行者123 更新时间:2023-12-03 02:48:30 26 4
gpt4 key购买 nike

我想创建一个用于库存管理的向导 UI。 xaml 中的相关行是:

<ContentPresenter Content="{Binding Current}" ContentTemplateSelector="{StaticResource inventorySelector}"/>

“Current”是当前事件的 View 模型,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 的实例和选择器,如下所示:

<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 的构造函数中设置了一个断点,并且可以单步执行它,但在下一个调试步骤中,显然当它尝试设置该选择器实例的第一个属性时,我立即得到一个带有内部异常的异常:

Cannot find resource named \"availableInventoriesDatatype\". Resource names are case sensitive.

这是怎么回事,为什么明确定义的资源却找不到?

最佳答案

好的,我找到了解决方案。唯一的错误是必须首先设置资源的“Key”属性。所以代替:

    <DataTemplate DataType="viewModels:AvailableInventoriesViewModel" x:Key="availableInventoriesDatatype" >
<controls:AvailableInventoriesView />
</DataTemplate>

我需要:

    <DataTemplate x:Key="availableInventoriesDatatype" DataType="viewModels:AvailableInventoriesViewModel" >
<controls:AvailableInventoriesView />
</DataTemplate>

关于wpf - 找不到名为 'X' 的资源,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com