Изменить windowStyle of Prism Диалоговое окно - PullRequest
0 голосов
/ 20 сентября 2019

Как я могу динамически изменить стиль окна с помощью Trigger?Нравится:

<Style TargetType="UserControl">

    <Setter Property="prism:Dialog.WindowStyle" Value="{DynamicResource  DefaultDialogStyleTheme}"></Setter>
    <Style.Triggers>

        <DataTrigger
            Binding="{Binding SecondOne, UpdateSourceTrigger=PropertyChanged}"
            Value="true">                    
            <Setter Property="prism:Dialog.WindowStyle" Value="{DynamicResource DialogStyleTheme}"></Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>`

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Спасибо за вашу помощь :), но, например, прежде чем мы переключились на новую Prism, мы использовали действие PopupWindowAction для вызова окна по умолчанию или пользовательского окна:

  var wrapperWindow = GetWindow(args.Context);                                                                
  wrapperWindow.ShowDialog(); 

GetWindow возвращает окно илиCustomWindowObject.

Это пользовательский стиль окна:

   <Style x:Key="DialogStyleTheme" TargetType="implementation:CustomDialogWindow">
    <Setter Property="WindowStyle" Value="None" />
    <Setter Property="ResizeMode" Value="CanMinimize" />
    <Setter Property="SizeToContent" Value="WidthAndHeight" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="AllowsTransparency" Value="True" />
    <Setter Property="FontSize" Value="60" />
    <Setter Property="ShowInTaskbar" Value="False" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="implementation:CustomDialogWindow">
                <Border BorderThickness="2" CornerRadius="10" BorderBrush="White" Background="DimGray"
                        x:Name="MainBorder">
                    <Grid Background="{TemplateBinding Background}" Margin="5,5,5,5">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="30" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Grid Grid.Row="0" x:Name="MoveGrid">
                            <Image x:Name="Image">
                                <Image.Style>
                                    <Style TargetType="Image">
                                        <Setter Property="Stretch" Value="UniformToFill" />
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding SmallTitle}" Value="true">
                                                <Setter Property="Height" Value="40" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Image.Style>
                            </Image>
                            <TextBlock Text="{Binding Title}">
                                <TextBlock.Style>
                                    <Style BasedOn="{StaticResource TouchHeadTextBlock}" TargetType="TextBlock">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding SmallTitle}" Value="true">
                                                <Setter Property="FontSize" Value="25" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </TextBlock.Style>
                            </TextBlock>
                        </Grid>
                        <ContentPresenter Grid.Row="2" x:Name="ContentPresenter" ClipToBounds="True" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

И я устанавливаю WindowStyle в моем UserControl, и я хочу изменить этот стиль с помощью триггера ....

 prism:Dialog.WindowStyle="{DynamicResource DialogStyleTheme}"

Инициализация:

    containerRegistry.RegisterDialog<ItemSelectionDialogView, ItemSelectionDialogViewModel>();
    containerRegistry.RegisterDialogWindow<CustomDialogWindow>();
0 голосов
/ 20 сентября 2019

Вы можете зарегистрировать свою собственную реализацию IDialogWindow со всеми желаемыми стилями.

Код реализации библиотеки здесь (xaml) и там (код сзади) для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...