1

コードビハインドを使用せずに、データグリッドの列を非表示にすることは可能ですか?たとえば、VisualStateManager

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
x:Class="Buttons.MainPage"
Width="640" Height="480">

<StackPanel x:Name="LayoutRoot" Width="624" HorizontalAlignment="Right" Margin="0,0,8,0" >
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="EditStates">
            <VisualState x:Name="ReadOnly" />
            <VisualState x:Name="Edit">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ShownInEditMode" Storyboard.TargetProperty="(UIElement.Visibility)" BeginTime="00:00:00" Duration="00:00:00.0010000">
                        <DiscreteObjectKeyFrame KeyTime="00:00:00">
                            <DiscreteObjectKeyFrame.Value>
                                <Visibility>Visible</Visibility>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <data:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding BBRNumbers}">
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="AlwaysShown" Width="80" Binding="{Binding Municipality}" />
            <data:DataGridTextColumn Header="ShownInEditMode" Width="73" Binding="{Binding Estate}" Visibility="Collapsed" />
        </data:DataGrid.Columns>
    </data:DataGrid>
</StackPanel>

次を呼び出すと列が非表示になりますが、これは機能しません。

VisualStateManager.GoToState(this, "Edit", false);

何か案は?

4

3 に答える 3

1

私はまだこれに対する簡単な解決策を思いつくことができませんでした。ただし、少なくともこれが機能しない理由を説明するのは唯一の公平です。プロパティをアニメーション化するには、プロパティが である必要がありますDependencyProperty。のVisibilityプロパティは でDataGridColumnはないためDependencyProperty、アニメーション化されません。

于 2010-03-16T21:23:36.380 に答える
0

DataGrid をサブクラス化するか、添付プロパティを作成して可視性を切り替えることができます。ただし、不透明度とは異なり、VisualStateManager で FluidLayout を有効にしない限り、可視性を実際に「アニメーション化」することはできません。

Fluid UI の詳細については、http://www.microsoft.com/design/toolbox/tutorials/fluidui/をご覧ください。

于 2011-10-21T23:48:26.870 に答える
0

列幅= 0に設定してみてください

于 2011-10-21T21:10:16.317 に答える