Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css WPF扩展器自动调整大小_Css_Wpf - Fatal编程技术网

Css WPF扩展器自动调整大小

Css WPF扩展器自动调整大小,css,wpf,Css,Wpf,我有一个自定义扩展器,已创建为模板: <local:MultiplyConverter x:Key="multiplyConverter" /> <ControlTemplate x:Key="AnimatedExpander" TargetType="{x:Type Expander}"> <DockPanel> <ToggleButton x:Name="ExpanderButt

我有一个自定义扩展器,已创建为模板:

<local:MultiplyConverter x:Key="multiplyConverter" />
        <ControlTemplate x:Key="AnimatedExpander" TargetType="{x:Type Expander}">
            <DockPanel>
                <ToggleButton x:Name="ExpanderButton" DockPanel.Dock="Top" Template="{StaticResource ExpanderButton}" Content="{TemplateBinding Header}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" OverridesDefaultStyle="True">
                </ToggleButton>
                <ScrollViewer x:Name="ExpanderContentScrollView" DockPanel.Dock="Bottom" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Bottom">
                    <ScrollViewer.Tag>
                        <sys:Double>0.0</sys:Double>
                    </ScrollViewer.Tag>
                    <ScrollViewer.Height>
                        <MultiBinding Converter="{StaticResource multiplyConverter}">
                            <Binding Path="ActualHeight" ElementName="ExpanderContent"/>
                            <Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
                        </MultiBinding>
                    </ScrollViewer.Height>
                    <ContentPresenter x:Name="ExpanderContent" ContentSource="Content" />
                </ScrollViewer>
            </DockPanel>
            <ControlTemplate.Triggers>
                <Trigger Property="IsExpanded" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetName="ExpanderContentScrollView" Storyboard.TargetProperty="Tag" To="1" Duration="0:0:0.3">
                                    <DoubleAnimation.EasingFunction>
                                        <CubicEase EasingMode="EaseOut"/>
                                    </DoubleAnimation.EasingFunction>
                                </DoubleAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetName="ExpanderContentScrollView" Storyboard.TargetProperty="Tag" To="0" Duration="0:0:0.3">
                                    <DoubleAnimation.EasingFunction>
                                        <CubicEase EasingMode="EaseOut"/>
                                    </DoubleAnimation.EasingFunction>
                                </DoubleAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

0
当我实际在网格中实例化扩展器时,代码如下所示:

<Expander Template="{StaticResource AnimatedExpander}" ExpandDirection="Down" OverridesDefaultStyle="True" FontSize="11.0" Foreground="#CC000000" Header="Export Options" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <Border Grid.Column="0" CornerRadius="0" Background="Transparent" Margin="10,0,10,0" BorderBrush="#FFAAAAAA" BorderThickness="0,0,0,0.5">
                    <ComboBox Grid.Column="0" ItemsSource="{Binding CurrentSlicerManager.Exporters}" DisplayMemberPath="Name" SelectedItem="{Binding CurrentSlicerManager.SelectedExporter, Mode=TwoWay}" Grid.Row="0" Margin="0,0,0,10"></ComboBox>
                </Border>
                <ContentControl Content="{Binding CurrentSlicerManager}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"></ContentControl>
            </Grid>
        </Expander>
<DataTemplate DataType="{x:Type MLC:MLRasterSlicerManager}">
            <local:MLRasterSlicerExportSettings></local:MLRasterSlicerExportSettings>
        </DataTemplate>

        <DataTemplate DataType="{x:Type MLC:MLVectorSlicerManager}">
            <local:MLVectorSlicerExportSettings></local:MLVectorSlicerExportSettings>
        </DataTemplate>

如您所见,我已将扩展器中的内容绑定到ContentControl。ContentControl使用DataTemplate来确定应将哪个.xaml加载到扩展器中。我有两个数据模板,如下所示:

<Expander Template="{StaticResource AnimatedExpander}" ExpandDirection="Down" OverridesDefaultStyle="True" FontSize="11.0" Foreground="#CC000000" Header="Export Options" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition></RowDefinition>
                </Grid.RowDefinitions>
                <Border Grid.Column="0" CornerRadius="0" Background="Transparent" Margin="10,0,10,0" BorderBrush="#FFAAAAAA" BorderThickness="0,0,0,0.5">
                    <ComboBox Grid.Column="0" ItemsSource="{Binding CurrentSlicerManager.Exporters}" DisplayMemberPath="Name" SelectedItem="{Binding CurrentSlicerManager.SelectedExporter, Mode=TwoWay}" Grid.Row="0" Margin="0,0,0,10"></ComboBox>
                </Border>
                <ContentControl Content="{Binding CurrentSlicerManager}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"></ContentControl>
            </Grid>
        </Expander>
<DataTemplate DataType="{x:Type MLC:MLRasterSlicerManager}">
            <local:MLRasterSlicerExportSettings></local:MLRasterSlicerExportSettings>
        </DataTemplate>

        <DataTemplate DataType="{x:Type MLC:MLVectorSlicerManager}">
            <local:MLVectorSlicerExportSettings></local:MLVectorSlicerExportSettings>
        </DataTemplate>

所以,我有两个.xaml文件(MLRasterSlicerExportSettings和MLVectorSlicerExportSettings),可以加载它们。。。这个很好用。问题是这两个接口的高度不同。当我更改控制加载到扩展器中的文件的组合框时,我希望扩展器自动调整自身大小。当它首先加载高度较小的扩展器,然后切换到高度值较大的扩展器时,就会发生这种情况。。。扩展器会调整自身大小以适应较大的文件。。。但是如果我把它切换回较小的,那么它永远不会调整到合适的高度。它只是保持与最大文件相同的高度。有人能推荐如何让这个扩展器自动调整大小到内容的大小吗