我发现自己陷入了这个似乎根本无法解决的小问题。我试图在WPF项目中将DataContext
设置为Window
,如下所示:
XAML文件:
<Window x:Class="CSB.Tasks.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"
xmlns:local="clr-namespace:CSB.Tasks"
xmlns:vm="clr-namespace:CSB.Tasks.ViewModels.WPF" <!-- This is what i need -->
mc:Ignorable="d"
Title="MainWindow"
Height="350"
Width="525">
<WindowChrome.WindowChrome>
<WindowChrome ResizeBorderThickness="{Binding ResizeBorderThickness}"
GlassFrameThickness="0"
CornerRadius="{Binding CornerRadius}"/>
</WindowChrome.WindowChrome>
<StackPanel Margin="5">
</StackPanel>
我想将WindowViewModel
设置为Window
的ViewModel,但是VS似乎找不到包含该类的文件夹。因此,当我尝试添加Window.DataContext
时:
<Window.DataContext>
<vm:WindowViewModel/>
</Window.DataContext>
VS显然告诉我该类不存在。
我一直在寻找关于SO的类似问题,但发现了很多类似问题,但没有人真正帮助过我。我已经尝试过重新启动VS,清理和重建项目,在特定的目标平台(现在将其设置为Any CPU)上编译,将ViewModel移到根文件夹中,然后再将其移回,完全没有更改。
有人知道原因是什么吗?
预先感谢您的帮助。
答案 0 :(得分:0)
我实际上设法将DataContext
添加到MainWindow XAML中。为了ViewModel
的名称空间被设置为CSB.Tasks
以便全局访问它,但是即使使用本地xmlns,我也无法引用它。我必须根据ViewModel
在项目文件夹中的实际路径更改其名称空间,所以:
namespace CSB.Tasks.ViewModels.WPF
{
public class WindowViewModel : BaseViewModel
{
...
}
}
为了设置xmlns:vm
并在DataContext
声明中使用它。然后,我将ViewModel
命名空间切换回CSB.Tasks
并重新编译了项目,由于某种原因,在XAML编辑器中,我可以从WindowViewModel
访问xmlns:local
。>
对我来说还不是很清楚。
谢谢大家的帮助!