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> 

Когда IsApproved изменения свойств моего объекта в OverviewTitlesCollection я хочу, чтобы контролировать текст TextBlock. Как я могу контролировать это с помощью триггеров в моем datatemplate?

ответ

2

Изменения DataTemplate к этому:

<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> 

Он теперь использует DataTrigger, чтобы проверить против переплета, а не Trigger, который поддерживает только отдельные свойства на объектах как шаблоны. Я также упростил его, чтобы использовать значение по умолчанию и один триггер для переключения вперед и назад. Когда триггер станет неактивным, он вернется в исходное состояние (Text = «Approved»).

+0

Спасибо, это работает! –

0

До тех пор, пока свойство IsApproved поднято INotifyPropertyChanged, ваш DataTrigger будет работать.

И использовать <DataTrigger Binding="{Binding IsApproved}". .. вместо триггера

+0

Я просто получаю «Недопустимый XML» по этому коду. Он не может определить {Binding IsApproved}, используя {TemplateBinding IsApproved}, который он сказал: Недвижимость 'IsApproved' не найдена в категории «Управление» –

Смежные вопросы