我有一个WPF Window类,它使用一个本地(在同一命名空间中)类来从ViewModel关闭Window。我从另一个项目中复制了这个类,它工作得很好,并且适当地更改了名称空间。我正在获得一个设计器并使用VS编译错误,该类在命名空间中不存在。这是我的Xaml:
Interactable
这是DialogCloser类:
<Window x:Class="MOABIMTools.Views.CreateTypesView"
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:xc="clr-namespace:MOABIMTools"
xmlns:local="clr-namespace:MOABIMTools.Views"
local:DialogCloser.DialogResult="{Binding DialogResult}"
Title="BIM Parameter Maintenance" Height="500" Width="1000">
我已经清理并重建,通过复制/粘贴重置xaml中的命名空间引用,关闭VS并重新启动,并从xc namesapce更改为本地,没有任何帮助。我只是没有看到错误。但是我在Xaml文件中的DialogCloser绑定行下得到蓝色波浪线以及编译错误:
using System.Windows;
namespace MOABIMTools.Views
{
public static class DialogCloser
{
public static readonly DependencyProperty DialogResultProperty =
DependencyProperty.RegisterAttached(
"DialogResult",
typeof(bool?),
typeof(DialogCloser),
new PropertyMetadata(DialogResultChanged));
private static void DialogResultChanged(
DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
var window = d as Window;
if (window != null)
window.DialogResult = e.NewValue as bool?;
}
public static void SetDialogResult(Window target, bool? value)
{
target.SetValue(DialogResultProperty, value);
}
}
}
我觉得错误必须是简单的,因为窗口和DialogCloser类都来自另一个工作项目。但我没有看到问题。
答案 0 :(得分:0)
DialogCloser
位于namespace MOABIMTools.Views
,但在您的xaml中,您设置xmlns:xc="clr-namespace:MOABIMTools"
,然后使用xc:DialogCloser.DialogResult
调用它。
我认为你需要改变的是替换
xmlns:xc="clr-namespace:MOABIMTools"
到
xmlns:xc="clr-namespace:MOABIMTools.Views"
你在设计过程中没有得到错误的原因,可能是因为它使用了旧的编译对象。尝试重建一切。