Диалог WPF MaterialDesignInXamlToolkit развернуть на полную ширину - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь, чтобы диалоговое окно в DialogHost было максимально растянуто по горизонтали, без жесткого определения размера отображаемого элемента управления.

Попробовал следующее:

  • установка UserControl.Hor HorizontalAligment в Stretch
  • установка HorizontalContentAligment в Stretch на DialogHost

Я заметил, что если установить Width равным 6000, диалог заполняет DialogHost с помощью некоторые приятные отступы, но переполнение содержимого и правая сторона не видны.

Есть ли какой-нибудь стандартный способ добиться этого?

Я закончил этим, и это работает, но, возможно, есть лучший способ

// in ControlShowedInDialog.xaml.cs
this.WhenActivated(d =>
    {
        var window = Window.GetWindow(this);
        window.WhenAnyValue(x => x.ActualWidth).Throttle(TimeSpan.FromMilliseconds(10), RxApp.MainThreadScheduler).Do(width => Width = width * 0.85).Subscribe().DisposeWith(d);
        window.WhenAnyValue(x => x.ActualHeight).Throttle(TimeSpan.FromMilliseconds(10), RxApp.MainThreadScheduler).Do(height => Height = height * 0.75).Subscribe().DisposeWith(d);

1 Ответ

0 голосов
/ 08 апреля 2020

Попробуйте использовать RelativeSource привязку для привязки с DialogHost ActualWidth.

Установите это значение на UserControl,

...
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf;assembly=MaterialDesignThemes.Wpf"
...
Width="{Binding Path=ActualWidth, 
                RelativeSource={RelativeSource AncestorType={x:Type wpf:DialogHost}, 
                Mode=FindAncestor}}"

Если вам все еще нужно больше корректировки, вы можете использовать IValueConverter для достижения этой цели.

...