C# 将GridView拉伸到父控件边界

C# 将GridView拉伸到父控件边界,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我有一个自定义控件,在其中放置带有GridView的SemanticZoom。 问题是,如果GridView只有很少的项可显示,则SemanticZoom的宽度小于容器的宽度。结果放大缩小按钮在屏幕中部放置不正确。 如果有许多项要显示,那么GridView会将自身拉伸到父控件边界,一切正常 即使里面只有很少的项目,如何正确地拉伸语义缩放(或内部网格视图)? 自定义容器代码: <controls:DataLoader Grid.RowSpan="2" >

我有一个自定义控件,在其中放置带有GridView的SemanticZoom。 问题是,如果GridView只有很少的项可显示,则SemanticZoom的宽度小于容器的宽度。结果放大缩小按钮在屏幕中部放置不正确。

如果有许多项要显示,那么GridView会将自身拉伸到父控件边界,一切正常

即使里面只有很少的项目,如何正确地拉伸语义缩放(或内部网格视图)?

自定义容器代码:

<controls:DataLoader Grid.RowSpan="2" >
                <controls:DataLoader.DataContent>
                    <SemanticZoom x:Name="SemanticZoom"  Style="{StaticResource SemanticZoomStyle}"  Margin="0,0,0,0" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
                        <SemanticZoom.ZoomedOutView>
                            ..skipped..
                        </SemanticZoom.ZoomedOutView>

                        <SemanticZoom.ZoomedInView>
                            <GridView x:Name="ZoomedInView"
                                ItemsSource="{Binding Source={StaticResource GroupedPatients}}" 
                                      ItemTemplate="{StaticResource PatientItemTemplate}" 
                                      Style="{StaticResource DataGridViewStyle}"
                                      behaviors:SelectionChangedCommandBehavior.Command="{Binding SelectPatientCommand}" Margin="0,0,0,0" 
                                      HorizontalAlignment="Stretch"  HorizontalContentAlignment="Stretch"
                                      Background="Yellow">


                                <GridView.GroupStyle>
                                    <GroupStyle HeaderTemplate="{StaticResource PatientItemGroupHeaderTemplate}">
                                        <GroupStyle.Panel>
                                            <ItemsPanelTemplate>
                                                <VariableSizedWrapGrid Orientation="Vertical"/>
                                            </ItemsPanelTemplate>
                                        </GroupStyle.Panel>
                                    </GroupStyle>
                                </GridView.GroupStyle>
                            </GridView>
                        </SemanticZoom.ZoomedInView>
                    </SemanticZoom>
                </controls:DataLoader.DataContent>

…跳过。。
GridView样式:

<Style x:Key="DataGridViewStyle" TargetType="GridView">
    <Setter Property="IsItemClickEnabled" Value="True"/>
    <Setter Property="SelectionMode" Value="None"/>
    <Setter Property="VerticalAlignment" Value="Stretch"/>
    <Setter Property="Width" Value="Auto"/>
    <Setter Property="Padding" Value="0"/>
    <Setter Property="Margin" Value="0"/>
</Style>
            </controls:DataLoader>


正确的解决方案是使用Grid而不是GridView

我只能说“哦,我的天哪!”。
DataContext
用于保存/提供数据,而不是UI元素。。。线索就在名字里。从MSDN上的页面:获取或设置元素参与数据绑定时的数据上下文。当你用
DataLoader.DataContent
做一些奇怪的事情时,所有的卡片都不在桌子上了。。。任何事情都有可能发生。顺便说一句,简单的答案是将父容器控件的。不过,我不想说它是否仍然适用于您奇怪的代码。它是数据内容,而不是示例中的上下文。所有可能的属性都已设置为“拉伸”,但没有帮助。抱歉。。。我的错。但这里的任何人都无能为力,因为您还没有提供我们可以测试的文件。我如何将其上传到这里?Minimal example是一个完整的VS解决方案,它超出了复制粘贴几行代码的范围。我必须把档案上传到某个地方