在将目标控件版本从15063更改为目标版本17314之后,我的GUI控件是否发生了任何已知原因?

时间:2019-02-12 15:20:05

标签: c# .net xaml uwp

我的应用程序使用数据透视菜单。数据透视表菜单项包含一个用户控件,该用户控件是一个页面,因此您单击一个数据透视表项,它会将您带到该数据透视表的详细信息页面,类似于主/详细样式。

我想将目标版本升级到版本17134,但是当我这样做时,控件会出现一些奇怪的行为。 15063版本的支点内的边框会根据内容调整其大小。在17134中,它没有调整内容的大小。

我尝试在scrollviewer上设置height = auto,scrollviewer是枢轴中内容演示者的持有人。 我已经尝试过各种不同的操作,并在各种控件上都设置了高度,但是没有运气。非常感谢您的帮助。

这是关键点

 <Control.Resources>
    <vmc:NullableIntToIntConverter  x:Key="NullableIntToIntConverter"/>
    <Style TargetType="PivotHeaderItem">
        <Setter Property="FontFamily" Value="Segoe UI" />
        <Setter Property="FontWeight" Value="{ThemeResource PivotHeaderItemThemeFontWeight}" />
        <Setter Property="FontSize" Value="20" />
        <Setter Property="CharacterSpacing" Value="{ThemeResource PivotHeaderItemCharacterSpacing}" />
        <Setter Property="Background" Value="#477DAC" />
        <!--6B84AA-->
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Padding" Value="{ThemeResource PivotHeaderItemMargin}" />
        <Setter Property="Height" Value="35" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="PivotHeaderItem">
                    <Grid x:Name="Grid" Background="{TemplateBinding Background}">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="SelectionStates">
                                <VisualStateGroup.Transitions>
                                </VisualStateGroup.Transitions>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Unselected" />
                                <VisualState x:Name="UnselectedLocked">
                                </VisualState>
                                <VisualState x:Name="Selected">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                                        </ObjectAnimationUsingKeyFrames>

                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Black" />
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="FontWeight">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Bold" />
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Grid" Storyboard.TargetProperty="Background">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="UnselectedPointerOver">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseMediumHighBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="SelectedPointerOver">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseMediumHighBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Grid" Storyboard.TargetProperty="Background">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="FontWeight">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Bold" />
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="UnselectedPressed">
                                    <Storyboard>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="SelectedPressed">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseMediumHighBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Grid" Storyboard.TargetProperty="Background">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" />
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <ContentPresenter x:Name="ContentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="{TemplateBinding Padding}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" FontWeight="{TemplateBinding FontWeight}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                            <ContentPresenter.RenderTransform>
                                <TranslateTransform x:Name="ContentPresenterTranslateTransform" />
                            </ContentPresenter.RenderTransform>
                        </ContentPresenter>
                        <Border x:Name="TopLine" Height="2" Background="#D3D3D3" VerticalAlignment="Top" HorizontalAlignment="Stretch" />
                        <Border x:Name="BottomLine" Height="2" Background="#D3D3D3" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" />
                        <Border x:Name="RightLine" Width="1" Background="#D3D3D3" VerticalAlignment="Stretch" HorizontalAlignment="Right" Height="{TemplateBinding Height}" />
                        <Border x:Name="LeftLine" Width="1"  Background="#D3D3D3" VerticalAlignment="Stretch" HorizontalAlignment="Left" Height="{TemplateBinding Height}" />
                        <Border x:Name="SelectedLine" Height="2" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Background="#D3D3D3" Margin="15,0,0,0" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
<StackPanel>
    <Border BorderBrush="#477DAC" BorderThickness="1,1,1,1"  Margin="0,0,0,0"   >
        <Pivot Name="pvtSecondLevel" SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"  Background="#FFFFFF" ManipulationMode="None" Padding="0" >
            <Pivot.HeaderTemplate>
                <DataTemplate x:DataType="models:MenuItem">
                    <TextBlock Text="{Binding HeaderTitle, Mode=OneWay}"/>
                </DataTemplate>
            </Pivot.HeaderTemplate>
            <Pivot.ItemTemplate  >
                <DataTemplate x:DataType="models:MenuItem" >
                    <ScrollViewer >
                        <ContentPresenter  Content="{Binding Content}"   />
                    </ScrollViewer>
                </DataTemplate>
            </Pivot.ItemTemplate>
        </Pivot>
    </Border>
</StackPanel>

这是所有所有页面的常规页面模板,即枢纽中的内容

<local:BaseControl
    x:Class="LD75ClaimSystem.UI.View.IncomeDetailsView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="using:LD75ClaimSystem.UI.View"
    xmlns:grid="using:Telerik.UI.Xaml.Controls.Grid"
    xmlns:vm="using:LD75ClaimSystem.UI.ViewModel"
    mc:Ignorable="d"
    <StackPanel DataContext="{StaticResource VM}" >
        <Grid Margin="10,0,0,0">
            <Button Content="Add Income"  Margin="0,10,0,0" />
            <ComboBox Header="Claim" Grid.Column="2"/>
        </Grid>
        <grid:RadDataGrid Name="DetailsGrid">
            <grid:RadDataGrid.Columns>

            </grid:RadDataGrid.Columns>
        </grid:RadDataGrid>
    </StackPanel>
</local:BaseControl>

这是预期的行为,也是版本15063的行为。如果我将网格取出,边框将调整其大小以适合内容。

expected expected

这是版本17314的结果。边框不再适应大小,并且似乎由魔术来控制,因为它是自己的东西。

not expected not expected

更新 下载适用于16299的sdk之后,意外行为消失了。目标版本17134仍然会导致意外行为。

https://imgur.com/a/ZZfa09I

1 个答案:

答案 0 :(得分:1)

我不是RadDataGrid的专家,但从查看这个问题/答案(https://www.telerik.com/forums/raddatagrid-and-scroll-bar)看来,它似乎包含自己的数据ScrollViewer。这意味着您在ScrollViewer的{​​{1}}中不需要Pivot

第二,您在BaseControl中的DataTemplate不会告诉包含控件其高度是什么...,因为它会不断扩展以适合内容。因此,在这种情况下,您的StackPanel根本没有使用其RadDataGrid。我希望您的奇怪的高度/边距问题与'ScrollViewer'/'StackPanel'和ScrollViewer的不同版本如何协商各自的大小有关。

如果您删除RadDataGrid并用包含两个ScrollViewer的{​​{1}}替换StackPanel,它可能会消失,其中一个带有自动高度,第二个带有*高度。

类似这样的东西:

Grid