WPF MVVM模式下如何将UI窗口变量传参到Viewmodel层
UI层窗口定义
//窗口中绑定ViewModel<hc:GlowWindow.DataContext><viewmodel:MainWindowViewModel /></hc:GlowWindow.DataContext>//注册初始化事件<hc:Interaction.Triggers><hc:EventTrigger EventName="Loaded"><hc:EventToCommand Command="{Binding CmdLoaded}" PassEventArgsToCommand="True"/></hc:EventTrigger></hc:Interaction.Triggers>//需要传递到viewmodel层的UI控件<BorderGrid.Column="1"Margin="5"Background="{DynamicResource MainContentForegroundDrawingBrush}"><Grid x:Name="MainContent"></Grid></Border>//需要传递到viewmodel层的UI控件 <hc:DrawerName="DrawerSourceCode"Dock="Right"MaskCanClose="True"ShowMode="Push"><hc:ScrollViewer Width="700"><avalonEdit:TextEditorName="TextContainer"Margin="5"FontFamily="Consolas"FontSize="10pt"IsReadOnly="True"ShowLineNumbers="True"SyntaxHighlighting="C#" /></hc:ScrollViewer></hc:Drawer>
viewModel层
// 控件private Grid MainContent;private TextEditor TextContainer;/// <summary>/// 关联控件 通过Lazy关键字 实现延迟初始化/// </summary>public RelayCommand<RoutedEventArgs> CmdLoaded => new Lazy<RelayCommand<RoutedEventArgs>>(() => new RelayCommand<RoutedEventArgs>(Loaded)).Value;private void Loaded(RoutedEventArgs e){MainContent = (e.Source as MainWindow).MainContent;TextContainer = (e.Source as MainWindow).TextContainer;}