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

问题描述 投票:0回答:1

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

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

我已经尝试在scrollviewer上设置height = auto,这是pivot中内容展示者的持有者。我已经尝试了很多不同的东西,各种控制的高度,但没有运气。任何帮助深表感谢。

这是支点

 <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的行为。如果我取出网格,边框将调整其大小以适合内容。

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

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

https://imgur.com/a/ZZfa09I

c# .net xaml uwp
1个回答
1
投票

我不是RadDataGrid的专家,但在我看来这个问题/答案(https://www.telerik.com/forums/raddatagrid-and-scroll-bar),它包含自己的ScrollViewer数据。这意味着你不需要ScrollViewerPivot中的DataTemplate

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

如果你移除ScrollViewer并用含有两个StackPanelGrid替换RowDefinitions它可能会消失...一个具有自动高度,第二个具有*高度。

像这样的东西:

<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"
    <Grid DataContext="{StaticResource VM}" >
       <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Button Content="Add Income"  Margin="10,10,0,0" />
        <ComboBox Header="Claim" HorizontalAlignment="Right" Margin="0,10,10,0"/>
        <grid:RadDataGrid Name="DetailsGrid" Grid.Row="1">
            <grid:RadDataGrid.Columns>

            </grid:RadDataGrid.Columns>
        </grid:RadDataGrid>
    </StackPanel>
</local:BaseControl>
© www.soinside.com 2019 - 2024. All rights reserved.