1

WPFリストビュー内のすべてのテキストブロックを確認するにはどうすればよいですか?今、私は各テキストブロックに適用しなければならないスタイルを定義しました。こんな感じ

    <Style x:Key="orderDetailsTextBlock" TargetType="TextBlock" >
        <Style.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="Failed">
                <Setter Property="TextDecorations" Value="Strikethrough" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

私が欲しいのは、これをListViewItemStyleブロック内で一度適用できるようにすることです。

こんな風にやってみました

    <Style x:Key="ordersListViewItemStyle" TargetType="{x:Type ListViewItem}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="Failed">
                <Setter Property="TextBlock.TextDecorations" Value="Strikethrough" />
            </DataTrigger>
        </Style.Triggers>           
    </Style>

しかし、これは機能しません。どんな助けでもありがたいです。

更新 ListViewのXAMLを次のように更新しました

    <ListView x:Name="orderDetails" AlternationCount="2" ItemContainerStyle="{StaticResource ordersListViewItemStyle}" >
    <ListView.Resources>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Status}" Value="Failed">
                    <Setter Property="TextDecorations" Value="Strikethrough" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="Статус" >
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock 
                                            Text="{Binding Path=Status, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
                                            ToolTip="{Binding Path=Message, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
                                            TextAlignment="Center" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

何も起こりません。私は何を間違えましたか?

4

2 に答える 2

3

ListView.Resourcesを使用せずに内部のスタイルを定義できます。その範囲は、その特定の内部のKeyすべてのに制限されます。TextBlockListView

例えば:

<ListView x:Name="MyListView">
    <ListView.Resources>
        <Style TargetType="TextBlock">
            <!-- Style specific content -->
        </Style>
    </ListView.Resources>
    <!-- ListView content -->
</ListView>
于 2012-08-05T10:15:35.877 に答える
1

スタイルのx:Keyを削除して、に配置すると、自動的に適用されます。(の備考を参照)TextBlockListView.ResourcesTargetType

于 2012-08-05T10:14:44.270 に答える