Change the style of content dialog button in windows phone universal application

﹥>﹥吖頭↗ 提交于 2019-12-08 02:40:03

问题


I have this content dialog box defined inside my xaml:

    <ContentDialog x:Name="AlertMessage" Background="#363636" IsSecondaryButtonEnabled="True" SecondaryButtonText="Cancel"  IsPrimaryButtonEnabled="True" PrimaryButtonText="Ok" >
        <ContentDialog.Content>
            <StackPanel Name="rootStackPanel" Height="Auto"  >
                <StackPanel Margin="0">
                    <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
                        <TextBlock x:Name="HeadingText" x:FieldModifier="public" Style="{StaticResource ApplicationMessageBoxHeadingStyle}" Text="Alert"  />
                        <Image Margin="10,05,0,0" Source="/Assets/Images/alert.png" Width="35"></Image>
                    </StackPanel>
                    <TextBlock x:FieldModifier="public" x:Name="ContentText" Style="{StaticResource ApplicationMessageBoxErrorStyle}" Text="Are you sure you want to log off ?" />
                </StackPanel>
            </StackPanel>
        </ContentDialog.Content>
    </ContentDialog>

And I'm calling it like this:

private void AppBarButton_Click(object sender, RoutedEventArgs e)
    {
        MessageBox();
    }
    private async void MessageBox()
    {
        ContentDialogResult LogoutDialog = await AlertMessage.ShowAsync();

        if (LogoutDialog == ContentDialogResult.Primary)
        {
            this.Frame.Navigate(typeof(MainPage));
        }
        else
        {
            // User pressed Cancel or the back arrow.
            // Terms of use were not accepted.
        }

    }

Problem: is that my app have a style for all the buttons in my applications. And I want to apply same styles to the primary and secondary buttons of that dialog box too. And I am unable to figure out how to Achieve this. Is it possible to apply styles to these buttons?


回答1:


The ContentDialog buttons aren't customizable, but you can leave the ContentDialog's primary and secondary buttons unset and add your own buttons within the template.




回答2:


If you want to change the ContendDialog PrimaryButtonSettings you need inside ContenDialog.Resources just to set a Style that you are targeting Buttons and the Setter of With Property="" and Value="" and that should fix below is one example.

Converter={StaticResource StringEmptyToBoolConverter}}"
<ContentDialog.Resources>
    <converters:StringEmptyToBoolConverter x:Key="StringEmptyToBoolConverter"/>
    <Style TargetType="Button">
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="FontSize" Value="13.6"/>
        <Setter Property="Width" Value="Auto"/>
    </Style>
</ContentDialog.Resources>
<WebView Height="400" Width="500" DefaultBackgroundColor="Transparent" Source="{Binding State.GuideUri}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" x:Name="RulesWebView"/>



回答3:


You can indirectly customize the buttons. The ContentDialog's buttons use the "default" style for the target type "Button". You can overwrite the ContentDialog Style of the SDK and add a different Button Style in the Setter of the Template. This button style will just be valid in the scope of the ContentDialog control.

In this example the new button style needs to be put in the first border element (x:Name="Container")

<Border.Resources>
  <Style TargetType="Button" BasedOn="{StaticResource YourNormalButtonStyle}">
    <Setter Property="BorderBrush" Value="Red"/>
    <Setter Property="Foreground" Value="Red"/>
  </Style>
</Border.Resources>



回答4:


I used this code to change Button color on my UWP app.

 var cd = new ContentDialog();
 cd.Content = "Remove file ?";
 cd.Title = "Remove file";
 cd.PrimaryButtonText = "OK";
 cd.SecondaryButtonText = "Cancel";
 var bst = new Windows.UI.Xaml.Style(typeof(Button));
 bst.Setters.Add(new Setter(Button.BackgroundProperty, Colors.Red));
 bst.Setters.Add(new Setter(Button.ForegroundProperty, Colors.White));
 cd.PrimaryButtonStyle = bst;
 var ress = await cd.ShowAsync();



来源:https://stackoverflow.com/questions/28538456/change-the-style-of-content-dialog-button-in-windows-phone-universal-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!