2011-04-27 6 views
1

컨텍스트 : 진행 막대를 나타내는 TemplateColumn이 하나있는 DataGrid가있는 C# 4.0 WPF 응용 프로그램입니다.조건부로 WPF DataGrid의 TemplateColumn에서 요소를 숨기는 방법?

조건에 따라 특정 항목의 진행률 표시 줄 만 표시하려면 어떻게합니까?

아마도 이벤트를 듣고 셀/설정 visibile을 숨기면 옵션이 될 수 있습니다.

이것은 (진행률 표시 줄이 모든 항목에 대해 표시됩니다) 지금 모습입니다 :

<UserControl.Resources> 
    <DataTemplate x:Key="PotentialDataTemplate"> 
     <Grid Width="70"> 
      <ProgressBar 
       Height="12" 
       VerticalAlignment="Center" 
       Value="{Binding Path=Potential, Mode=OneWay}" /> 
     </Grid> 
    </DataTemplate> 
</UserControl.Resources> 

<DataGrid x:Name="dataGrid" 
     ItemsSource="{Binding Path=Items}" 
     AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn 
      Header="{Binding Source={x:Static text:TextBindingProvider.Instance}, Path=CompendiumHeaderPotential}" 
      Width="Auto" 
      MinWidth="80" 
      CellTemplate="{StaticResource PotentialDataTemplate}" 
      IsReadOnly="true" 
      SortMemberPath="Potential" /> 
    </DataGrid.Columns> 
</DataGrid> 

답변

2

당신은 몇 가지 옵션이 조건이 가시성이 무엇인지에 따라 있습니다. "IsPotentialVisible"과 같은 별도의 속성이있는 경우이 속성을 BooleanToVisibilityConverter를 사용하여 진행률 막대의 Visibility 속성에 바인딩 할 수 있습니다.

다음은 "잠재력 == 0이면 숨기기"와 같은 간단한 조건이면이 조건을 처리하는 DataTrigger를 만들 수 있습니다.

그렇지 않으면 입력 속성/매개 변수가 필요한 모든 항목을 기반으로 가시성을 떨어 뜨리는 사용자 지정 변환기를 만들 수도 있습니다.

+0

감사합니다! 지금은 자신의 속성을 구현했지만 DataTriggers도 살펴 보겠습니다. 변환기로 정확히 무엇을 의미합니까? 내가 볼 수있는 WPF 개념인가? – Cilvic

+1

안녕하세요, WPF의 바인딩을 사용하면 IValueConverter 인터페이스에서 파생 된 클래스 인 변환기를 지정할 수 있습니다. http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx 복잡한 바인딩과 기타 많은 유용한 전환이 있습니다. –

2

답변을 찾았을 때 단순히 Visibility 속성을 추가하고 ViewModel의 일부 조건부 로직에 바인딩하기 만하면됩니다.

Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay} 

그래서 : 나에게 그 다른 옵션을주는

<Grid Width="70"> 
     <ProgressBar 
      Height="12" 
      VerticalAlignment="Center" 
      Value="{Binding Path=Potential, Mode=OneWay}" 

      Visibility = "{Binding Path=ShowPotentialBar, Mode=OneWay}" /> 

    </Grid> 
+0

ShowPotentialBar 속성이 Visibility 열거 형이 아닌 한 BooleanToVisibilityConverter가 없으면이 속성이 작동하지 않습니다. –

+0

실제로 그것은 "숨김", "보이기"또는 "콜백"을 반환하는 문자열 반환 유형과 함께 작동합니다. – Cilvic

+0

이 경우 기본 바인딩 변환기는 문자열을 열거 형으로 변환합니다. 많은 사람들이 좋은 연습. –