2010-03-15 6 views
1

코드 숨김을 사용하지 않고 DataGrid의 열을 숨길 수 있습니까? 예. VisualStateManager? 그 후에 열을 숨겨야 다음을 호출Silverlight DataGrid : 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); 

어떤 아이디어가?

답변

1

아직 간단한 해결책을 제시하지 못했습니다. 그러나 내가 왜 적어도 이것이 작동하지 않는지에 관해 당신에게 이야기하는 것은 그 유일한 공평입니다. 속성을 애니메이트하려면 속성이 DependencyProperty이어야합니다. DataGridColumnVisibility 속성은 DependencyProperty이 아니므로 애니메이션이 적용되지 않습니다.

+0

감사에서 봐 주시기 바랍니다. DataGrid를 상속하여 열의 가시성을 제어 할 수있는 DependencyProperty를 구현하는 솔루션입니다. 나중에이 솔루션을 게시하는 일이 번거로워집니다. 당신이 더 좋은 것을 가지고 있다면, 저에게 알려주십시오 :-) –

0

당신은 열 너비를 설정 시도 할 수는 = 0

0

당신은 서브 클래스 데이터 그리드 또는 중 하나는 가시성을 전환 할 수있는 연결된 속성을 만들 수 있습니다. 그러나 불투명도와 달리 VisualStateManager에서 FluidLayout을 활성화하지 않으면 가시성을 실제로 애니 메이팅 할 수 없습니다.

은 유체 UI에 대한 자세한 정보를 위해, sence하게 입력에 대한 http://www.microsoft.com/design/toolbox/tutorials/fluidui/