Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
它';是否可以在Silverlight/WPF中设置DataGrid列折叠动画?_Wpf_Silverlight_Datagrid_Visualstatemanager - Fatal编程技术网

它';是否可以在Silverlight/WPF中设置DataGrid列折叠动画?

它';是否可以在Silverlight/WPF中设置DataGrid列折叠动画?,wpf,silverlight,datagrid,visualstatemanager,Wpf,Silverlight,Datagrid,Visualstatemanager,我在Silverlight中有一个简单的DataGrid,其中包含以下内容: <data:DataGrid AutoGenerateColumns="False" ...> <data:DataGridTextColumn x:Name="idCol" Header="Id" Binding="{Binding Id}" /> <data:DataGridTextColumn x:Name="nameCol" Header="Name" Bind

我在Silverlight中有一个简单的
DataGrid
,其中包含以下内容:

<data:DataGrid AutoGenerateColumns="False" ...>

    <data:DataGridTextColumn x:Name="idCol" Header="Id" Binding="{Binding Id}" />

    <data:DataGridTextColumn x:Name="nameCol" Header="Name" Binding="{Binding Name}" />

    <data:DataGridTextColumn x:Name="descriptionCol" Header="Description" Binding="{Binding Description}" />

</data:DataGrid

可能有点麻烦,但是在列上设置
MinWidth
MaxWidth
的动画怎么样?基本上,根据您要执行的操作设置它们,并将
MinWidth
设置为较高的值以进行展开,将
MaxWidth
设置为较低的值以进行折叠

以下是用于在MinWidth上制作动画的完整xaml(我仍然认为这有点不太成熟):



我能够让他们制作动画。请参阅此代码:
仅用于添加。。。我无法在xaml中获得要设置动画的
Width
属性(我正在使用blend)。但我确实将
DataGridColumn.WidthProperty
DataGridColumn.MinWidthProperty',
DataGridColumn.MaxWidthProperty'视为依赖属性。你是对的。。。我不知道如何设置DataGridLength的动画,但是
inWidth
MaxWidth
只是两倍:)嗯。。。您确定可以设置MinWidth和MaxWidth的动画吗?我认为它们必须是依赖属性才能设置动画…我在第一篇评论中给出的示例在xaml中运行良好。。。不过我并没有在代码隐藏中这样做。哦,对不起,我是指xaml代码。但现在我知道为什么。。。您正在使用WPF,而我正在谈论Silverlight!:)无论如何,+1在WPF中,这将起作用!我认为另一个可能的解决方案是使用
DataGridTemplateColumn
,然后可以在
DataTemplate
中设置控件的动画,而无需设置实际列的动画。
private void ExpandColumns()
{
    // not animated expanding
    //myDataGrid.Columns[0].Visibility = Visibility.Visible;
    //myDataGrid.Columns[2].Visibility = Visibility.Visible;.

}

private void CollapseColumns()
{
    // not animated collapsing
    //myDataGrid.Columns[0].Visibility = Visibility.Collapsed;
    //myDataGrid.Columns[2].Visibility = Visibility.Collapsed;

}
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SolveProblems.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Window.Resources>
    <Storyboard x:Key="OnClick1">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(DataGridColumn.MinWidth)" Storyboard.TargetName="dataGridCheckBoxColumn">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="80"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(DataGridColumn.MinWidth)" Storyboard.TargetName="dataGridCheckBoxColumn1">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="90"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="button">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot">
    <DataGrid x:Name="dataGrid" Margin="100,54,129.5,82.5">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn x:Name="dataGridCheckBoxColumn" Width="{Binding Columns[0].MinWidth, ElementName=dataGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
            <DataGridCheckBoxColumn x:Name="dataGridCheckBoxColumn1" Width="{Binding Columns[1].MinWidth, ElementName=dataGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </DataGrid.Columns>
    </DataGrid>
    <Button x:Name="button" Content="Button" HorizontalAlignment="Right" Margin="0,115,22,0" VerticalAlignment="Top" Width="75"/>

    </Grid>