我有一个使用的对话框,我简单无法理解为什么它不会绑定。
我使用Joe White的DialogCloser,来自answer
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);
}
}
我只在DialogWindow.xml中使用它
<Window x:Class="ATS.Views.Common.DialogWindow"
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"
Title="WindowDialog"
WindowStyle="SingleBorderWindow"
WindowStartupLocation="CenterOwner" SizeToContent="WidthAndHeight"
xmlns:xc="clr-namespace:ATS.Views.Common"
xc:DialogCloser.DialogResult="{Binding DialogResult}"
ResizeMode="NoResize">
<ContentPresenter x:Name="DialogPresenter" Content="{Binding .}"></ContentPresenter>
自我绑定是在我想用于对话框窗口的抽象类上。
public class DialogViewModel : BaseViewModel
{
private bool? dialogResult;
public bool? DialogResult
{
get
{
return dialogResult;
}
set
{
dialogResult = value;
NotifyPropertyChange("DialogResult");
}
}
}
我用ViewModel打开对话框:
public bool? ShowDialog(string title, DialogViewModel dataContext)
{
var win = new DialogWindow();
win.Title = title;
win.DataContext = dataContext;
return win.ShowDialog();
}
现在似乎发生了什么,即使我创建新的对话框窗口,它自己的绑定只会被添加一次,因此它只能在创建的第一个对话框上工作。
由于相同的命名空间和名称,它是否与绑定到一个使得绑定不起作用的abstact类有关?
编辑: 使用Mark处理对话框的方式结束,可以找到here