0

我有一个列表视图和内容主持人的主/详细信息页面。我的问题是,当文本块的内容小于当前窗口时,内容展示器不会填充父网格的整个剩余空间。ContentPresenter在Windows 10的uwp应用程序不扩展到全宽

我曾尝试添加Horizo​​ntalAlign ='Stretch'和VerticalAlign ='Stretch',但没有任何效果。

下面是该MasterDetailPage.xaml

<Page.Resources> 
    <DataTemplate x:Key="MasterListViewItemTemplate" x:DataType="data:List"> 
     <Grid Margin="0,11,0,13"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="Auto" /> 
      </Grid.ColumnDefinitions> 

      <TextBlock Text="{x:Bind Title}" Style="{ThemeResource BaseTextBlockStyle}" /> 

      <TextBlock Style="{ThemeResource CaptionTextBlockStyle}" 
       Text="{x:Bind Date}" 
       Grid.Column="1" 
       Margin="12,1,0,0" /> 
     </Grid> 
    </DataTemplate> 

    <DataTemplate x:Key="DetailContentTemplate" x:DataType="data:List"> 
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
      <StackPanel 
       Orientation="Vertical" 
       Margin="0,9,12,9"> 
       <TextBlock 
       Margin="0,8" 
       Style="{ThemeResource TitleTextBlockStyle}" 
       TextWrapping="WrapWholeWords" 
       Text="{x:Bind Title}"/> 

       <RichTextBlock 
       x:Name="textContent" 
       IsTextSelectionEnabled="True" 
       TextWrapping="WrapWholeWords" 
       common:Html2TextParser.Html="{x:Bind Content}"/> 
      </StackPanel> 
     </ScrollViewer> 
    </DataTemplate> 

    <DataTemplate x:Key="comboListTemplate" x:DataType="data:Combo"> 
     <TextBlock Text="{x:Bind Title}"/> 
    </DataTemplate> 
</Page.Resources> 

<Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded" UseLayoutRounding="True"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="AdaptiveStates" CurrentStateChanged="AdaptiveStates_CurrentStateChanged"> 
      <VisualState x:Name="DefaultState"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="720" /> 
       </VisualState.StateTriggers> 
      </VisualState> 

      <VisualState x:Name="NarrowState"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target="MasterColumn.Width" Value="*" /> 
        <Setter Target="DetailColumn.Width" Value="0" /> 
        <Setter Target="MasterListView.SelectionMode" Value="None" /> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition x:Name="MasterColumn" Width="320" /> 
     <ColumnDefinition x:Name="DetailColumn" Width="*" /> 
    </Grid.ColumnDefinitions> 

    <ComboBox 
     Name="comboList" 
     Margin="2,2,2,2" 
     ItemsSource="{x:Bind comboSource.combos}" 
     LayoutUpdated="comboList_LayoutUpdated" 
     SelectionChanged="comboList_SelectionChanged" 
     ItemTemplate="{StaticResource comboListTemplate}" 
     HorizontalAlignment="Stretch" /> 

    <ListView 
     x:Name="MasterListView" ItemsSource="{x:Bind listSource.lists}" 
     Grid.Row="1" 
     ItemContainerTransitions="{x:Null}" 
     ItemTemplate="{StaticResource MasterListViewItemTemplate}" 
     IsItemClickEnabled="True" 
     ItemClick="MasterListView_ItemClick"> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 

    <ContentPresenter 
     x:Name="DetailContentPresenter" 
     Grid.Column="1" 
     Grid.RowSpan="2" 
     BorderThickness="1,0,0,0" 
     BorderBrush="{ThemeResource SystemControlForegroundBaseLowBrush}" 
     Content="{x:Bind MasterListView.SelectedItem, Mode=OneWay}" 
     ContentTemplate="{StaticResource DetailContentTemplate}" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     Margin="12,0,0,0"> 
     <ContentPresenter.ContentTransitions> 
      <!-- Empty by default. See MasterListView_ItemClick --> 
      <TransitionCollection /> 
     </ContentPresenter.ContentTransitions> 
    </ContentPresenter> 
</Grid> 

谁能解决这个问题的代码?这是我的问题的截图。

ScrollViewer not filling width

+0

我测试了你编辑它的代码[this](http://i.stack.imgur.com/1hmIh.jpg)。它似乎有效。 –

+0

@Jayden Gu也是滚动查看器工作?在richtextblock中添加的run元素是否也有水平对齐设置为'Stretch'?如果是这样,我该如何添加它? –

+0

没有运行..它是块*做块需要水平对齐设置伸展吗? –

回答

0

在为ContentPresenter和主网格本身设置了不同的颜色后,我发现即使我的主网格“LayoutRoot”没有扩展到全宽!

原因是我正在使用SplitView,并且我在SpiltView的内容元素中导航了我的MasterDetailPage.xaml。我只是设置Horizo​​ntalAlign ='Stretch'SplitView它解决了我的问题!

0

你可以尝试把你的contentpresenter视框里面。 ViewBox旨在伸展和缩放单个孩子以填充可见空间。

Documentation here

我希望可以帮助你:)

+0

它没有工作..虽然视窗确实拉伸的内容,以适应空间,内容被缩小到这样做,因此滚动查看器从来没有出现 –

0

我测试你的XAML和我无法重现你的问题请看截图 我蓝色的空间就是你contentPresenter,橙色空间是ScrollViewer中最后是你的文本块与虚拟文本。 enter image description here

+0

感谢您检查了这一点..我似乎已经犯了一个错误码。它是一个RichTextBlock,而不是一个简单的TextBlock。我已经改变了代码来反映这个..并且还添加了错误的快照以供参考 –

+0

好的让我检查 – RicardoPons

相关问题