Datatemplate绑定

时间:2010-06-08 21:23:32

标签: wpf

我怎样才能实现这样的目标:

<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中的触发器来控制它?

2 个答案:

答案 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}". ..代替触发器