(HospitalViewModel) По событию, через Command, срабатывает вызов нового окна
private void ExecuteDialog(object obj)
{
if (testViewModel == null)
testViewModel = new TestViewModel(obj);
var registerCommand = new UICommand()
{
Caption = "Register",
IsCancel = false,
IsDefault = true,
Command = new DelegateCommand<CancelEventArgs>(
x => { }
),
};
var cancelCommand = new UICommand()
{
Id = MessageBoxResult.Cancel,
Caption = "Cancel",
IsCancel = true,
IsDefault = false,
};
var result = DialogService.ShowDialog(
dialogCommands: new List<UICommand>() {registerCommand, cancelCommand},
title: "Registration Dialog",
viewModel: testViewModel
);
if (result == registerCommand)
{
}
}
private bool CanExecuteDialog(object obj)
{
return true;
}
(TestViewModel)в другой viewModel я получаю этот объект
public object Lpu { get; set; }
public TestViewModel(object o)
{
Lpu = (TF_LPU1) o;
}
(TestView)как во view получить этот объект?
public TestView()
{
InitializeComponent();
}
HospitalView.xaml
<dxmvvm:Interaction.Behaviors>
<dx:DialogService DialogWindowStartupLocation="CenterOwner">
<dx:DialogService.ViewTemplate>
<DataTemplate>
<view:TestView />
</DataTemplate>
</dx:DialogService.ViewTemplate>
<dx:DialogService.DialogStyle>
<Style TargetType="dx:DXDialogWindow">
<Setter Property="Width" Value="300"/>
<Setter Property="Height" Value="160"/>
<Setter Property="WindowStyle" Value="ToolWindow"/>
</Style>
</dx:DialogService.DialogStyle>
</dx:DialogService>
</dxmvvm:Interaction.Behaviors>
<Grid>
<dxg:GridControl ItemsSource="{Binding Path=Lpu, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="AddNew">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="MouseDoubleClick" Command="{Binding DialogCommand}">
<dxmvvm:EventToCommand.EventArgsConverter>
<dx:EventArgsToDataRowConverter/>
</dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
<dxg:GridControl.View>
<dxg:TableView AllowEditing="False" NavigationStyle="Row">
<dxg:TableView.RowCellMenuCustomizations>
<dxb:BarButtonItem GlyphSize="Large"
Content="Удалить МО"
Glyph="{dx:DXImage Image=Remove_32x32.png}"
Command="{Binding Path=View.DataContext.RevomeCommand}" CommandParameter="{Binding Path=Row}">
</dxb:BarButtonItem>
<dxb:BarItemSeparator />
</dxg:TableView.RowCellMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
TestViewModelпередать вTestViewпараметром конструктора (это касается кода на 3 картинке) и сделать присвоение дата-контексту переданного параметра, а не новой vm. Далее сделатьTF_LPU1публичным свойствомpublic object TF_LPU1 { get; private set; }, чтобы можно было получить объект. – Andrey K. Jul 15 '19 at 11:57