我怎样才能实现这样的目标:
<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>
当在StatusTitlesCollection中我的对象上的IsApproved属性发生更改时,我想控制TextBlock的文本。我如何通过datatemplate中的触发器来控制它?
答案 0 :(得分: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来检查绑定,而不是仅支持像控件一样被模板化的对象上的各个属性的触发器。我还简化了它,使用默认值和单触发来回切换。当触发器变为非活动状态时,它将切换回原始状态(Text =“Approved”)。
答案 1 :(得分:0)
只要你的IsApproved属性引发了INotifyPropertyChanged,那么你的DataTrigger就可以工作。
并使用<DataTrigger Binding="{Binding IsApproved}". ..
代替触发器