我创建了一个 wpf 项目(使用 caliburn micro 和 MVVM 模式,没有代码隐藏),其中包含 2 个视图模型及其相关视图:
ShellView.xaml 和 ShellViewModel.cs
OtherView.xaml 和 OtherViewModel.cs
ShellView 包含:
ContentControl 指的是OtherView/OtherViewModel。
一个 TextBox,其中包含所谓的“目标文本”。
OtherView 包含一个 StackPanel,其中包含:
接受来自用户的文本(作为“源文本”)的 TextBox。
在鼠标右键单击事件上将源文本复制到目标的按钮。
我的问题:
如何将 OtherView/ViewModel 中的源文本复制到 ShellView/ViewModel 中的目标文本?任何最佳实践?
ShellViewModel 可以从源文本框捕获 PropertyChange 事件吗?
如何反向复制(从目标到源)?
在此先感谢您,如果需要,请随时修改下面的代码。
ShellView.xaml
<UserControl
x:Class="CmMultipleViewModelView.Views.ShellView"
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"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<Grid Width="800" Height="450">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ContentControl
x:Name="ActiveItem"
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
<TextBox
x:Name="TargetText"
Grid.Column="1"
Width="80"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</UserControl>
ShellViewModel.cs
public class ShellViewModel : Conductor<object>
{
public ShellViewModel()
{
DisplayName = "Shell Window";
var otherVM = new OtherViewModel();
ActivateItem(otherVM);
}
public string DisplayName { get; set; }
private string _targetText = "Target";
public string TargetText
{
get => _targetText;
set
{
_targetText = value;
NotifyOfPropertyChange(() => TargetText);
}
}
}
繁华开满天机
相关分类