【问题标题】:Why is my ViewModel not found?为什么找不到我的 ViewModel?
【发布时间】:2016-08-13 16:33:42
【问题描述】:

为什么 VS 找不到我的文件?

VS 错误图片和文字:

严重性代码描述项目文件行抑制状态 错误 CS0246 找不到类型或命名空间名称“AudioFile”(您是否缺少 using 指令或程序集引用?)重新订购 C:\Users\kloud\Documents\Visual Studio 2015\Projects\ reOrder\reOrder\ReorderPage.xaml.cs 27 活动

我重新创建了项目以查看 Visual Studio 是否在做我看不到/无法理解的事情,并广泛检查了正在运行的代码(正确找到项目并绑定)以查看差异在哪里。但我找不到任何线索。

编辑:我在 Windows 10 周年更新上使用 Visual Studio 2015 社区版。此外,在以前的项目中,VS 在查找和绑定到模型时没有遇到任何问题。

完整代码如下。

重新排序页面

<Page
    x:Class="reOrder.ReorderPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:reOrder"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:viewModels="using:reOrder.Models"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>

        <ListView Grid.Row="1"
                  ItemsSource="{x:Bind AudioFiles}">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="viewModels:AudioItem">
                    <StackPanel>
                        <TextBlock Text="{x:Bind Name}"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Page>

音频项目模型 (跳过使用)

namespace reOrder.Models
{
    public class AudioItem
    {
        public string Path { get; set; }

        public string Name { get; set; }

        public int Duration { get; set; }
    }
}

【问题讨论】:

    标签: c# data-binding uwp uwp-xaml


    【解决方案1】:

    即使在重建解决方案后我也遇到了同样的问题。我做的一个解决方法是转到文件资源管理器中的 .csproj 文件,现在在 itemgroup 标签下编辑添加:

    <Compile Include="ViewModels\AudioItemModel .cs">
      <DependentUpon>Reorder.xaml</DependentUpon>
    </Compile>
    

    保存并关闭它,然后重建它,现在它将检测到视图模型。

    【讨论】:

    • 谢谢,完成了!但是你知道为什么会发生这种情况吗?我的意思是,即使是新项目也有这个问题。另外,您在哪里找到了这个解决方案?
    • 我自己通过比较其他 uwp 应用程序的各种 .csproj 文件来解决它,它在其中检测视图模型,然后发现这种相似性并解决了它。但由于我只是一个初学者,我不知道为什么会这样:)
    【解决方案2】:

    您不在 xaml 中使用 using,而是使用 clr-namespace:。我不能确定你为你的程序集命名了什么,但我的猜测是:

    xmlns:viewModels="clr-namespace:reOrder;assembly=reOrder"
    

    【讨论】:

    • 错误文本更改为类似内容:名称“AudioItem”在命名空间“clr-namespace:reOrder;assembly=reOrder”中不存在编辑:代码与using 和此一起工作正常过去对我有用的解决方案类型。我正在研究一种教程模板样式的代码。
    • 首先,程序集名称正确吗?我说这只是猜测。其次,look at this SO question,也许您期望 xaml 在所有环境中都相同?
    • 我检查了,它是 reOrder,我没有更改项目设置中的任何内容,我正在为 Windows 10 构建 Windows 10 AU。语法怎么可能有问题?我提到了在此之前的项目正确地找到了类型并绑定到它。
    【解决方案3】:

    它发生在我将编译目标设置为 x64 之后。 在我将编译重置为任何 CPU 之前找不到我的视图模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多