XAML 从C#代码在UWP框架中以全宽度可视化ContentDialog

quhf5bfb  于 2023-03-27  发布在  C#
关注(0)|答案(2)|浏览(162)

我有一个UWP应用程序,当点击某些按钮时,我会动态显示ContentDialog。ContentDialog将包含markdown文本,该文本是根据单击的按钮从配置文件动态加载的。markdown文本还包含对图像的引用(仅供参考,这些图像的宽度为2480像素)

private async void ImageHelp_Tapped(object sender, TappedRoutedEventArgs e)
{
try
{

    MarkdownTextBlock markdownTextBlock = new MarkdownTextBlock();
    
    // BASED ON SENDER (button) IT WILL BE DIFFERENT
    markdownTextBlock.Text = ReadMarkDownTextFromConfig(sender); 

    markdownTextBlock.Background = new SolidColorBrush(Colors.Transparent);

    ScrollViewer sv = new ScrollViewer();
    sv.HorizontalScrollMode = ScrollMode.Auto;
    sv.VerticalScrollMode = ScrollMode.Enabled;
    sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
    sv.ZoomMode = ZoomMode.Enabled;               
    sv.Content = markdownTextBlock;

    ContentDialog notifyDialog = new ContentDialog
    {
        Content = sv,
        CloseButtonText = "Ok"                    
    };

    await notifyDialog.ShowAsync();
}
catch (Exception ex) { MessageDialog msg = new MessageDialog(ex.Message, "Error"); _ = msg.ShowAsync(); }
}

我想要的是,ContentDialog是可视化的“全宽”,我已经尝试设置ContentDialog的宽度,但没有多大帮助。我已经尝试了这个:

notifyDialog.MaxWidth = Window.Current.Bounds.Width;

还有这个

notifyDialog.Width = Window.Current.Bounds.Width;

即使我尝试了这些方法,ContentDialog的实际宽度也是Window宽度的一半,即使我将它设置为一个很大的数字,它也是一样的

new9mtju

new9mtju1#

除了@Adam Mcmahon关于使用Popup的解决方案之外,另一种方法是更改ContentDialog的默认MaxWidth。默认的ContentDialog MaxWidth是584,这是在通用.xaml文件中设置的。要覆盖它,您需要像这样在App.xaml中添加它:

<Application.Resources>
    <x:Double x:Key="ContentDialogMaxWidth">5000</x:Double>
</Application.Resources>
o7jaxewo

o7jaxewo2#

如果您可以使用Popup而不是ContentDialog,那么下面的代码应该可以满足您的需要。
据我所知-你不能让一个ContentDialog比它的默认最大宽度更大。你可以创建一个自定义控件,但这是一个简单得多的解决方案,如果你可以与一个Popup
XAML语言

<Popup VerticalAlignment="Center">
        <Grid x:Name="PopupGrid"></Grid>
    </Popup>

C#

PopupGrid.Width = Window.Current.Bounds.Width;
    PopupGrid.Height = Window.Current.Bounds.Height;

相关问题