gpt4 book ai didi

wpf - "Resource with the name {Locator} cannot be found"使用 mvvm-light 用户控制时出错

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

我正在使用 mvvm light 工具包来创建 WPF 应用程序。我创建了一个用户控件和一个相应的 ViewModel。我在 ViewModelLocator 中创建了一个 ViewModel 属性。我将用户控件数据上下文绑定(bind)到 Locator 类中的属性。当我在 Blend 或 VS Designer 中编辑用户控件时,一切似乎都正常,因为我可以看到我的设计时间数据。

当我现在尝试在由工具包的 wpf 模板创建的主窗口上使用我的用户控件时,我收到错误“找不到名为 {Locator} 的资源”以及包含我的用户控件的行在mainwindow.xaml中用Blend中的红线标记。在 Visual Studio 中,同一行标有错误:“无法创建 MyView 类型的实例”。

编辑:这是app.xaml的源代码

<Application.Resources>
<!--Global View Model Locator-->
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True">
</Application.Resources>

这是EditCustomerView.xaml的代码

<UserControl.DataContext>
<Binding Path="EditCustomer" Source="{StaticResource Locator}" />
</UserControl.DataContext>

这是我的主窗口中的代码

<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>

<Window.DataContext>
<Binding Path="Main" Source="{StaticResource Locator}"/>
</Window.DataContext>

<Grid x:Name="LayoutRoot" Background="{DynamicResource BasicBackground}">
<Grid.RowDefinitions>
<RowDefinition Height="0.927*"/>
<RowDefinition Height="0.073*"/>
</Grid.RowDefinitions>
<ListBox Margin="4" SelectedItem="{Binding Main.SelectedCustomer, Mode=Default, Source={StaticResource Locator}}" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Customers, Mode=Default}"/>
<Button HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Content="Edit" Grid.Row="1" Command="{Binding EditCustomerCommand, Mode=Default}"/>
<Border x:Name="border" Opacity="0.75" Grid.RowSpan="2" Background="#FF706F6F" BorderBrush="Black" BorderThickness="1" Visibility="{Binding EditViewVisibility, Mode=Default}">
<views:EditCustomerView HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>

应用程序编译并运行。该错误仅在设计时发生。

你能告诉我我做错了什么吗?

提前谢谢您。

最佳答案

这是一个已知问题。 Blend 由于某种原因无法识别静态全局资源。

作为解决方法,您可以在 View 中创建 ViewModelLocator 的本地资源。

<Window.Resources>
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True">
</Window.Resources>

您必须包含 ViewModel 命名空间。

The issue is reported in codeplex here

and in stackoverflow here

似乎在 Blend 4 中已解决

关于wpf - "Resource with the name {Locator} cannot be found"使用 mvvm-light 用户控制时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317902/

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