В моем решении есть один проект с 2 папками: ViewModels и Views. Папка ViewModels состоит из файла MainViewModel и 3 папок с другими моделями представления, пусть они будут VM1, VM2 и VM3. Папка Views состоит из файла MainView и 3 папок с другими видами, пусть они будут V1, V2 и V3.
Идея состоит в том, чтобы поместить TabControl с 3 элементами табуляции для каждого представления в MainView.
У меня есть проблемы с пространствами имен:
VM1:
namespace UPR.ViewModels
{
public class VM1
{
public VM1()
{
}
}
}
V1.xaml.cs:
namespace UPR.Views
{
public partial class V1 : UserControl
{
public V1()
{
InitializeComponent();
}
}
}
V1.xaml:
<UserControl x:Class="UPR.Views.V1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ViewModels="clr-namespace:UPR.ViewModels"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
DataContext="{d:DesignInstance ViewModels:VM1}">
<Grid>
<StackPanel></StackPanel>
</Grid>
MainView.xaml:
<UserControl x:Class="UPR.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Views="clr-namespace:UPR.Views"
xmlns:ViewModels="clr-namespace:UPR.ViewModels"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"
DataContext="{d:DesignInstance ViewModels:MainViewModel}">
<Grid>
<dx:DXTabControl Grid.Row="0">
<dx:DXTabItem x:Name="xV1Tab">
<dx:DXTabItem.Header>
<TextBlock Text="V1 tab" FontSize="14"/>
</dx:DXTabItem.Header>
<Views:MonitoringView DataContext="{Binding V1Content}"/>
</dx:DXTabItem>
<dx:DXTabItem x:Name="xV2Tab">
<dx:DXTabItem.Header>
<TextBlock Text="V2 tab" FontSize="14"/>
</dx:DXTabItem.Header>
<Views:DetailsView DataContext="{Binding V2Content}"/>
</dx:DXTabItem>
<dx:DXTabItem x:Name="xV3Tab">
<dx:DXTabItem.Header>
<TextBlock Text="V3 tab" FontSize="14"/>
</dx:DXTabItem.Header>
<Views:NewTasksView DataContext="{Binding V3Content}"/>
</dx:DXTabItem>
</dx:DXTabControl>
</Grid>
Проект даже не компилируется из-за двух типов ошибок:
1 - VM1 не существует в пространстве имен "clr-namespace: ViewModels"
2 - тег "DesignInstance" не существует в пространстве имен XML "http://schemas.microsoft.com/expression/blend/2008 "
Эти ошибки также относятся к другим представлениям и моделям представления (VM2, VM3, V2, V3, MainVM, MainV).
Похоже, это задержка. Потому что, когда я пишу «ViewModels:» - IntelliSense предлагает мне список моделей представления по этому пути. Когда я пишу «d:», IntelliSense предлагает мне написать «d: DesignInstance».
Есть идеи, как решить эту проблему? Может быть, я должен что-то сделать с пространствами имен или структурой проекта?