Caliburn.Micro + MaterialToolkitDialog не открыт ..: ( - PullRequest
0 голосов
/ 12 октября 2018

с Calibrun.Micro (WPF) + MaterialToolkit , я пытался открыть диалог.но не работает .. Не могли бы вы проверить мой код?(в GitHub)

Вот небольшой тестовый проект.

Нажмите кнопку «Открыть».

enter image description here

эта кнопка запускает диалоговое окно, подобное этому.

public async void NewConnection(){
  var result = await DialogHost.Show(
  new UserControl { DataContext = new TestDialogViewModel() },
  "MainDialogHost");           
}

Меняется на серый фон (хорошо), но без диалога .. Почему?enter image description here

1 Ответ

0 голосов
/ 13 октября 2018

Я нашел решение.

// MainViewModel.cs
TestDialogViewModel vm;
...
public async void NewConnection()
{

        vm = IoC.Get<TestDialogViewModel>();
        var dialog = new TestDialogView()
        {
            DataContext = vm
        };

        var result = await DialogHost.Show(dialog, "MainDialogHost",
            (object sender, DialogOpenedEventArgs eventArgs) =>
            {
                // pass DialogSession to ViewModel. 
                // View Model can close own dialog !
                vm.dialogSession = eventArgs.Session;
            },
            (object sender, DialogClosingEventArgs eventArgs) =>
            {
                Debug.WriteLine($"IPaddress = "+vm.IpAddress);                    
            });

    }

и

<!-- in MainView.xaml -->
<materialDesign:DialogHost Identifier="MainDialogHost" 
                           CloseOnClickAway="True"
                           cal:Message.Attach="[Event DialogClosing]=[Action DialogHost_OnDialogClosing()]"
                          >

и ..

   // in TestDialogViewModel
   public DialogSession dialogSession;        
    public void BtnConnect()
    {
        dialogSession.Close();
    }

и ..

<!-- in TestDialogView.xaml -->
<StackPanel Margin="20" Orientation="Vertical">
        <TextBlock>Input IP Address</TextBlock>
        <TextBox Margin="0 20 0 10" 
                 FontSize="28"
             HorizontalAlignment="Stretch" 
             Text="{Binding Path=IpAddress, Mode=TwoWay}"
                 TextAlignment="Center"/>
        <TextBlock Foreground="Red" TextAlignment="Center" HorizontalAlignment="Center"></TextBlock>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Style="{StaticResource MaterialDesignFlatButton}"
                    cal:Message.Attach="[Event Click]=[Action BtnConnect()]"
                        IsDefault="True"
                        Margin="0 8 8 0">
                <Button.CommandParameter>
                    <system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">True</system:Boolean>
                </Button.CommandParameter>
                Connect
            </Button>
        </StackPanel>
    </StackPanel>

Скриншоты.

enter image description here

enter image description here

Это поможет кому-то Caliburn.Micro пользователь!

:)

...