2016-05-06 2 views
2

Я разрабатываю настольное приложение с махаппом и материальным дизайном. Я пытаюсь иметь два разных диалога в одном userControl. Они выглядят так:MaterialDesign несколько диалогов

<materialDesign:DialogHost x:Name="MachineDialogWindow" Identifier="2" Visibility="{Binding Visibility, ElementName=card}"> 
<grid></grid> 
</materialDesign:DialogHost> 

<materialDesign:DialogHost x:Name="DialogWindow" Visibility="{Binding ActiveDirectoryResult, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource NullVisibilityConverter}}"> 
<grid></grid> 
</materialDesign:DialogHost> 

Я удалил большую часть кода, чтобы это было просто. Когда я пытаюсь создать dialoghost в C# как это:

var view = new MachineNameDialogView(); 
      { 
       DataContext = new MachineNameDialogViewModel(); 
      } 
      ; 

      //show the dialog 
var result = await DialogHost.Show(view, AddAdministratorEventHandlerOpenedEventHandler, 
             AddAdministratorClosingEventHandler); 

Он отлично работает, но показывает окно в неправильном Dialoghost. Я добавил идентификатор в первое окно, но я не знаю, как передать это вместе с командой Dialoghost.showDialoghost.show
Мне нужен диалогClosingEventHandler, но я вижу, что существует метод перегрузки с Object dialogIdentifier. Итак, мой вопрос - можно ли получить лучшее из обоих миров и получить оба? И как я могу передать свой идентификатор 2 как объект метода?

ответ

3

Я понял. И теперь я чувствую себя глупо. Точки на нижней части Картинки, которую я разместил выше, означает, что есть больше перегрузок. Peek Definition
все, что я сделал правую кнопку мыши на Dialoghost.Show и нажал Peek Definition (Alt + F12) И нашел

public static Task<object> Show(object content, object dialogIdentifier, DialogOpenedEventHandler openedEventHandler, DialogClosingEventHandler closingEventHandler); 

Надеется, что это может по крайней мере помочь кому-то в будущем :)

Смежные вопросы