Window 在视图模型中使用 Caliburn 的导体时标题被覆盖<object>
Window title is overwritten when using Caliburn's conductor<object> in view model
Caliburn 和 WPF MVVM 的新手,所以我可能忽略了一些非常简单的东西,而且我在网上搜索时找不到任何东西。
使用 Caliburn.Micro 设置一个简单的 wpf 项目。在 ShellView.xaml 中设置 window 标题。工作良好。 Main MetroWindow 按预期显示标题。
工作正常:
[Export(typeof (IShell))]
public class ShellViewModel : PropertyChangedBased, IShell
{}
但改为:
[Export(typeof (IShell))]
public class ShellViewModel : Conductor<object>
{}
和 Window title 是此 ViewModel 的完全限定名称。任何帮助,将不胜感激。谢谢
你可以这样使用它:
[Export(typeof (IShell))]
public class ShellViewModel : Conductor<IScreen>
{
public ShellViewModel()
{
DisplayName = "Your window title";
}
}
在我的存储库中,您可以找到一些使用 Caliburn.Micro 的 WPF 应用程序,例如:
- DanceFloor - 这个使用 Conductor
- Library-Manager
感谢 Wojciech 为我指明了正确的方向。
当 ShellViewModel 继承 PropertyChangeBase 和 IShell 时,在 ShellView.xaml 中设置 Title = "Window Title" 有效。但是,当使用 Caliburn.Micro 2.0.2 并从 Conductor(单屏导体)继承时,window 标题被视图模型的 fully-qualified 名称覆盖(在我的例子中):
FBAGOLDEVALUATOR.APP.VIEWMODELS.SHELLVIEWMODEL
这看起来像是 Caliburn.Micro v2.02 中的错误,除非我遗漏了什么。
解决方法:将 .xaml 中 window 的标题 属性 绑定到 ViewModel 中的 public 属性。 .xaml 行:
Title="{Binding Path=DisplayTitle, Mode=OneWay}"
ShellViewModel.cs中的属性:
private string _displayTitle;
public String DisplayTitle
{
get
{
return _displayTitle;
}
set
{
if (value.Equals(_displayTitle)) return;
_displayTitle = value;
NotifyOfPropertyChange(() => DisplayName);
}
}
然后在ShellViewModel构造函数中设置:
DisplayTitle = "FBA Gold Evaluator";
这似乎有效。
Caliburn 和 WPF MVVM 的新手,所以我可能忽略了一些非常简单的东西,而且我在网上搜索时找不到任何东西。
使用 Caliburn.Micro 设置一个简单的 wpf 项目。在 ShellView.xaml 中设置 window 标题。工作良好。 Main MetroWindow 按预期显示标题。
工作正常:
[Export(typeof (IShell))]
public class ShellViewModel : PropertyChangedBased, IShell
{}
但改为:
[Export(typeof (IShell))]
public class ShellViewModel : Conductor<object>
{}
和 Window title 是此 ViewModel 的完全限定名称。任何帮助,将不胜感激。谢谢
你可以这样使用它:
[Export(typeof (IShell))]
public class ShellViewModel : Conductor<IScreen>
{
public ShellViewModel()
{
DisplayName = "Your window title";
}
}
在我的存储库中,您可以找到一些使用 Caliburn.Micro 的 WPF 应用程序,例如:
- DanceFloor - 这个使用 Conductor
- Library-Manager
感谢 Wojciech 为我指明了正确的方向。
当 ShellViewModel 继承 PropertyChangeBase 和 IShell 时,在 ShellView.xaml 中设置 Title = "Window Title" 有效。但是,当使用 Caliburn.Micro 2.0.2 并从 Conductor(单屏导体)继承时,window 标题被视图模型的 fully-qualified 名称覆盖(在我的例子中):
FBAGOLDEVALUATOR.APP.VIEWMODELS.SHELLVIEWMODEL
这看起来像是 Caliburn.Micro v2.02 中的错误,除非我遗漏了什么。
解决方法:将 .xaml 中 window 的标题 属性 绑定到 ViewModel 中的 public 属性。 .xaml 行:
Title="{Binding Path=DisplayTitle, Mode=OneWay}"
ShellViewModel.cs中的属性:
private string _displayTitle;
public String DisplayTitle
{
get
{
return _displayTitle;
}
set
{
if (value.Equals(_displayTitle)) return;
_displayTitle = value;
NotifyOfPropertyChange(() => DisplayName);
}
}
然后在ShellViewModel构造函数中设置:
DisplayTitle = "FBA Gold Evaluator";
这似乎有效。