2010-06-08 2 views
1

바인딩 : DataTemplate을 나는 이런 식으로 뭔가를 달성 할 수있는 방법

<ListView Name="OverviewTitlesListView" ItemsSource="{Binding OverviewTitlesCollection}"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Header="Index" Width="60" DisplayMemberBinding="{Binding TitleIndex}"/> 
         <GridViewColumn Header="Start Time" Width="100" DisplayMemberBinding="{Binding StartTime}"/> 
         <GridViewColumn Header="End Time" Width="100" DisplayMemberBinding="{Binding EndTime}"/> 
         <GridViewColumn Header="Title Text" Width="550" DisplayMemberBinding="{Binding Text}"/> 
         <GridViewColumn Header="Approved" Width="80"> 
          <GridViewColumn.CellTemplate> 
           <DataTemplate> 
            <TextBlock Name="Test"/> 
            <DataTemplate.Triggers> 
             <Trigger Property="{Binding IsApproved}" Value="true"> 
              <Setter TargetName="Test" Property="Text" Value="Approved"/> 
             </Trigger> 
             <Trigger Property="{Binding IsApproved}" Value="false"> 
              <Setter TargetName="Test" Property="Text" Value="Not Approved"/> 
             </Trigger> 
            </DataTemplate.Triggers> 
           </DataTemplate> 
          </GridViewColumn.CellTemplate> 
         </GridViewColumn> 
        </GridView> 
       </ListView.View> 
      </ListView> 

OverviewTitlesCollection 내 객체에 IsApproved 속성 변경이 내가 TextBlock의 텍스트를 제어 할

. 내 datatemplate의 트리거에 의해 어떻게 제어 할 수 있습니까?

답변

2
이에 DataTemplate을 변경

: 지금 바인딩에 대해 확인하는 DataTrigger을 사용

<DataTemplate> 
    <TextBlock x:Name="Test" Text="Approved"/> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding IsApproved}" Value="False"> 
      <Setter TargetName="Test" Property="Text" Value="Not Approved"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

아니라 단지 개체에 대한 개별 속성을 지원하는 트리거보다 컨트롤과 같은 템플릿으로 사용됩니다. 또한 기본 값과 단일 트리거를 사용하여 앞뒤로 전환하도록 단순화했습니다. 트리거가 비활성 상태가되면 원래 상태로 다시 전환됩니다 (텍스트 = "승인 됨").

+0

고맙습니다. 작동합니다! –

0

IsApproved 속성이 INotifyPropertyChanged를 발생 시키면 DataTrigger가 작동합니다.

대신 트리거의 <DataTrigger Binding="{Binding IsApproved}". ..를 사용

+0

나는이 코드로 "잘못된 XML"을 얻고 있습니다. {TemplateBinding IsApproved}를 사용하여 {Binding IsApproved}를 알아낼 수 없습니다. 'IsApproved'속성이 'Control'유형에서 발견되지 않았습니다. –

관련 문제