【问题标题】:ViewModel location into sub-folder (XAML, namespace)ViewModel 位置到子文件夹(XAML,命名空间)
【发布时间】:2017-05-11 07:31:35
【问题描述】:

进入 MainWindow.xaml 我有:

<Window x:Class="LayoutMVVM.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        ResizeMode="NoResize"

        xmlns:local="clr-namespace:LayoutMVVM"
        xmlns:veiwmodels="clr-namespace:LayoutMVVM.ViewModels"        
        xmlns:views="clr-namespace:LayoutMVVM.Views"

        Title="Layout" Height="750" Width="650">

我正在绑定 dataContext 到 Windows.Resources:

 <Window.Resources>
        <DataTemplate x:Name="SettingsTemp" DataType="{x:Type veiwmodels:SettingsModel}">
            <views:SettingsView DataContext="{Binding}" />
        </DataTemplate>
  </Window.Resources>

但是当我的其他模型和视图位于以下子文件夹中时:

我做不到:

 <DataTemplate x:Name="OpenTemp" DataType="{x:Type ViewModels:Open.OpenModel}">
    <views:Open.OpenView DataContext="{Binding}" />
 </DataTemplate>

或 LayoutMVVM.ViewModels.Open.OpenModel

或 LayoutMVVM/ViewModels/Open/OpenModel

【问题讨论】:

    标签: wpf xaml mvvm namespaces viewmodel


    【解决方案1】:

    你应该在控件的标题中添加一个新的:

    xmlns:veiwmodelsOpen="clr-namespace:LayoutMVVM.ViewModels.Open   
    

    或者您可以将 OpenModel 的命名空间设置为 LayoutMVVM.ViewModels不是 LayoutMVVM.ViewModels.Open)。

    我认为没有其他办法。

    【讨论】:

    • 正确查看内容,它适用于您的第一个答案
    • 再来一个:LayoutMVVM.ViewModels -> 那应该直接赋值给DataTemplate吧?
    • 不,你在 window xaml 标签中声明 veiwmodels,所以在 DataTemplate 中你可以写 DataType="{x:Type veiwmodels:OpenModel}" (如果 OpenModel 的命名空间是 LayoutMVVM.ViewModels
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多