如何在MVVMCross WPF应用中从核心项目设置MainWindow标题
解决方案
可以通过数据绑定的方式从核心项目侧控制WPF窗口的标题,MvvmCross框架原生支持该操作,无需额外自定义扩展。
步骤1:在核心项目的ViewModel中定义标题属性
在与MainWindow对应的ViewModel(通常命名为MainViewModel,继承自MvxViewModel)中添加可通知变更的标题属性,示例代码如下:
using MvvmCross.ViewModels; // 请替换为你实际的核心项目命名空间 namespace Core.ViewModels { public class MainViewModel : MvxViewModel { private string _windowTitle = "默认窗口标题"; public string WindowTitle { get => _windowTitle; set => SetProperty(ref _windowTitle, value); } } }
你可以在ViewModel的任意业务逻辑中修改WindowTitle的值,界面会自动同步更新。
步骤2:修改XAML绑定窗口标题
将MainWindow.xaml中硬编码的Title属性改为绑定ViewModel中的WindowTitle属性即可,修改后的完整XAML代码如下:
<views:MvxWindow x:Class="UI.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:UI" xmlns:views="clr-namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf" mc:Ignorable="d" Title="{Binding WindowTitle}" Height="450" Width="800"> <Grid> </Grid> </views:MvxWindow>
说明
MvvmCross框架会按照默认命名约定自动完成View和对应ViewModel的关联,无需手动设置DataContext,只要你的View和ViewModel命名匹配(如MainWindow对应MainViewModel)、命名空间符合框架约定,绑定即可正常生效。
内容的提问来源于stack exchange,提问作者mftrmbn
相关产品推荐
相关产品推荐

