C# 固定大小的可用页面,带模板10和汉堡?

C# 固定大小的可用页面,带模板10和汉堡?,c#,xaml,uwp,template10,C#,Xaml,Uwp,Template10,我正在尝试在一个模板10 UWP汉堡模板应用程序中创建一个绘图表面,背景中有一个模板图像。有没有办法强制主可视空间不可滚动?当我使用下面的XAML时,随着我将应用程序窗口拉得更宽,图像在屏幕外展开 <!-- content --> <StackPanel EntranceNavigationTransitionInfo.IsTargetElement="True" Padding="12,8,0,0"

我正在尝试在一个模板10 UWP汉堡模板应用程序中创建一个绘图表面,背景中有一个模板图像。有没有办法强制主可视空间不可滚动?当我使用下面的XAML时,随着我将应用程序窗口拉得更宽,图像在屏幕外展开

        <!--  content  -->
    <StackPanel EntranceNavigationTransitionInfo.IsTargetElement="True"
                  Padding="12,8,0,0"
                  RelativePanel.AlignBottomWithPanel="True"
                  RelativePanel.AlignLeftWithPanel="True"
                  RelativePanel.AlignRightWithPanel="True"
                  RelativePanel.Below="pageHeader">
        <StackPanel Orientation="Horizontal">
            <ComboBox Name="TemplateComboBox" ItemsSource="{x:Bind _templates}" SelectionChanged="TemplateComboBox_SelectionChanged" PlaceholderText="Select a template...">
                <ComboBoxItem Content="{Binding}" />
            </ComboBox>
            <TextBlock x:Name="stateTextBox"
                   Margin="16,0,0,0"
                   Text="Current Visual State" />
        </StackPanel>
        <Grid Name="DrawingGrid" Margin="0,5,5,5" >
            <Image Name="TemplateImage" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Stretch="Uniform" />
        </Grid>
    </StackPanel>

代码隐藏中有一段代码,用于在组合选择更改时设置图像源。我只希望图像延伸到当前的可视区域


叹息还没有开始使用墨水:(

您可以考虑检测可见区域的宽度和高度,然后将宽度和高度设置为图像控件的宽度和高度

<Grid EntranceNavigationTransitionInfo.IsTargetElement="True"
              Padding="12,8,0,0"
              RelativePanel.AlignBottomWithPanel="True"
              RelativePanel.AlignLeftWithPanel="True"
              RelativePanel.AlignRightWithPanel="True"
              RelativePanel.Below="pageHeader">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="9*"></RowDefinition>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <ComboBox Name="TemplateComboBox" PlaceholderText="Select a template...">
                <ComboBoxItem Content="{Binding}" />
            </ComboBox>
            <TextBlock x:Name="stateTextBox"
               Margin="16,0,0,0"
               Text="Current Visual State" />
        </StackPanel>
        <Grid Margin="0,5,5,5" x:Name="grid" Grid.Row="1">
            <ScrollViewer Name="scrollviewer" Width="{Binding ElementName=grid,Path=Width}" Height="{Binding ElementName=grid,Path=Height}" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
                <Image Name="TemplateImage" VerticalAlignment="Stretch" Source="/Assets/pic.jpg" HorizontalAlignment="Stretch" Stretch="Uniform" />
            </ScrollViewer>
        </Grid>
</Grid>

您可以考虑检测可见区域的宽度和高度,然后将宽度和高度设置为图像控件的宽度和高度

<Grid EntranceNavigationTransitionInfo.IsTargetElement="True"
              Padding="12,8,0,0"
              RelativePanel.AlignBottomWithPanel="True"
              RelativePanel.AlignLeftWithPanel="True"
              RelativePanel.AlignRightWithPanel="True"
              RelativePanel.Below="pageHeader">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="9*"></RowDefinition>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <ComboBox Name="TemplateComboBox" PlaceholderText="Select a template...">
                <ComboBoxItem Content="{Binding}" />
            </ComboBox>
            <TextBlock x:Name="stateTextBox"
               Margin="16,0,0,0"
               Text="Current Visual State" />
        </StackPanel>
        <Grid Margin="0,5,5,5" x:Name="grid" Grid.Row="1">
            <ScrollViewer Name="scrollviewer" Width="{Binding ElementName=grid,Path=Width}" Height="{Binding ElementName=grid,Path=Height}" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
                <Image Name="TemplateImage" VerticalAlignment="Stretch" Source="/Assets/pic.jpg" HorizontalAlignment="Stretch" Stretch="Uniform" />
            </ScrollViewer>
        </Grid>
</Grid>

设置Image Stretch=“UniformToFill”在您的情况下如何工作?它实际上根本不会更改输出。图像控件会进行拉伸,以允许它“显示”整个位图,保留外观。我说的是“显示”由于大部分内容都不在视口中,因此无法看到。我添加了一些额外的调试信息,在笔记本电脑的全屏显示中,页面(包括标题栏等)的实际高度为897,而图像控件的实际高度为2802。它只会真正显示其中的870个。如何设置Image Stretch=“UniformToFill”在你的情况下工作?它实际上根本没有改变输出。图像控件可以拉伸以允许它“显示”整个位图,保留外观。我说“显示”是因为大部分位图不在视口中,所以看不见。我添加了一些额外的调试信息,并在笔记本电脑的全屏上显示页面(包括标题栏等)它的实际高度为897,而图像控件的实际高度为2802。它只能显示其中的870。这一点都没有帮助。我们的想法是让图像完整显示,并在屏幕的视口中保留其纵横比,而不管应用程序窗口(或运行它的设备)的大小。在另一个示例应用程序中,我可以做到这一点,但它不使用Template10。我甚至让InkCanvas与图像的可见部分对齐,并随着图像的大小进行缩放。我无法确定如何使图像保持在显示窗口的可见范围内。@RobSpencer没关系。您可以考虑获取可见区域并设置图像控件的宽度和高度。ScrollViewer.ViewportWidth返回viewbale内容的宽度。请注意,您应该使用网格作为根面板,并使用“*”指定其行高。因为如果使用stackPanel作为根面板,子网格的默认高度将为0,那么您将无法看到图像控件。感谢Xavier-这就是我所缺少的。我认为由RelativePanel关联属性拉伸的stackPanel可以,但显然不行。我现在所做的是让图像与网格拉伸,但调整InkCanvas的大小以匹配它。进一步回答,这种方法的优点是,如果我为图像实现某种形式的缩放功能,InkCanvas将保持不变。这一点都没有真正的帮助。其想法是完整显示图像,并将其纵横比保持在v范围内屏幕的iewport,无论应用程序窗口(或运行它的设备)的大小。在另一个示例应用程序中,我可以做到这一点,但它不使用Template10。我甚至让InkCanvas与图像的可见部分对齐,并随着图像的大小进行缩放。我无法确定如何使图像保持在显示窗口的可见范围内。@RobSpencer没关系。您可以考虑获取可见区域并设置图像控件的宽度和高度。ScrollViewer.ViewportWidth返回viewbale内容的宽度。请注意,您应该使用网格作为根面板,并使用“*”指定其行高。因为如果使用stackPanel作为根面板,子网格的默认高度将为0,那么您将无法看到图像控件。感谢Xavier-这就是我所缺少的。我认为由RelativePanel关联属性拉伸的stackPanel可以,但显然不行。我现在所做的是让图像与网格拉伸,但调整InkCanvas的大小以匹配它。进一步回答,这种方法的优点是,如果我为图像实现某种形式的缩放功能,InkCanvas将保持不变。