2013-12-09 2 views
6

그리드가 포함 된 WPF 응용 프로그램이 있습니다. 그리드는로드시 제로 너비를 갖는 세 번째 그리드와 함께 세 개의 컬럼으로 분할됩니다.WPF DataTrigger로 그리드 열을 표시하고 숨김 XAML

두 개의 다른 데이터 열에 두 개의 데이터 격자가 있습니다. DataGrid 중 하나에서 선택된 항목이 다른 DataGrid 변경 사항을 변경하면 값 (예 : 마스터 세부 사항 템플리트)이 표시됩니다. 이 모든 것이 잘 작동합니다.

DataGrid에는이 세 번째 열의 너비가 0에서 2 *로 변경되기를 바라는 값이 하나 있습니다. 어떻게 해야할지 모르겠다.

XAML을 통해이 작업을 수행하고 싶습니다. 나는 데이터 트리거 & 값 변환기를보고있었습니다. 아래 코드를 작성하여 테스트 해 보았습니다. 나는 width = 0으로 설정하는 것을 읽었는데, 의존성 프로퍼티 우선 순위리스트에서 아마 더 높을 것이다. 어쨌든이 작업을 수행 할 예정입니까, 아니면 코드를 사용해야합니까?

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="0"/> 
    </Grid.ColumnDefinitions> 

    <DataGrid Grid.Column="0" 
       ItemsSource="{Binding OrderList}" 
       SelectedItem="{Binding OrderSelected}"     
       AutoGenerateColumns="True">          
    </DataGrid> 

    <TextBox Grid.Column="1" Text="{Binding OrderSelected.Name}"> 
    </TextBox> 

    <Grid x:Name="columnHideSeek" Grid.Column="2" Background="Blue"> 
     <Grid.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark"> 
         <Setter Property="Grid.Width" Value="10"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Grid.Style> 
    </Grid> 

</Grid> 
+1

너비 너비가 – Paparazzi

+0

인 사용자 가시성이 보이지 않을 때 다른 열의 크기에 영향을 줍니까? – mHelpMe

+0

숨김 상태로 표시하고 숨김 상태로 설정했습니다. 그러나 아무 것도 일어나지 않는 것 같습니다. 세 번째 열은 여전히 ​​다른 두 열의 크기에 영향을 미친 것 같습니다 – mHelpMe

답변

17

정확한 DataTrigger을 사용하면 완전히 가능합니다. 첫째, ... 당신이 변경하려는 UI 요소에 ColumnDefinition 아닌 GridTrigger을 추가

<ColumnDefinition> 
    <ColumnDefinition.Style> 
     <Style TargetType="{x:Type ColumnDefinition}"> 
      <Setter Property="Width" Value="10" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark"> 
        <Setter Property="Width" Value="2*" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ColumnDefinition.Style> 
</ColumnDefinition> 

다음으로, ColumnDefinition 요소에 Width을 설정 대신 Style하지 않습니다. 그렇지 않은 경우 ColumnDefinition 요소의 WidthDataTrigger에서 설정된 값을 무시합니다.

+0

다시 한번 감사드립니다! 완전한! – mHelpMe

+0

오늘 하루를 절약하십시오! – GreenEyedAndy