【问题标题】:Foreground style of disabled gridview in a listview does not change列表视图中禁用的网格视图的前景样式不会改变
【发布时间】:2017-11-27 21:17:57
【问题描述】:

我正在尝试更改 WPF 中禁用的网格视图的前景。 我的 xml 看起来像这样:

<ListView Grid.ColumnSpan="2" Grid.Row="3" ItemsSource="{Binding Lote_Entrada_Viscera.Detalle_Entrada_Viscera}" IsEnabled="False" Foreground="Black">
                    <ListView.ItemContainerStyle>
                        <Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource MetroListViewItem}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Completo}" Value="True">
                                    <Setter Property="Background" Value="Green"></Setter>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding Completo}" Value="False">
                                    <Setter Property="Background" Value="Red"></Setter>
                                </DataTrigger>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Foreground" Value="Black" />
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.View>
                        <GridView AllowsColumnReorder="False" ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle2}">
                            <GridViewColumn Header="Producto" Width="250" DisplayMemberBinding="{Binding Producto}">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding}" Width="250"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Header="Cantidad Lote" DisplayMemberBinding="{Binding Cantidad_Lote}" Width="100"></GridViewColumn>
                            <GridViewColumn Header="Procesados" DisplayMemberBinding="{Binding Capturadas}" Width="75"></GridViewColumn>
                            <GridViewColumn Header="Por Procesar" Width="90" DisplayMemberBinding="{Binding Por_Procesar, StringFormat={}{0:#}}"></GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>

我看到的所有答案都表明 IsEnabled 上的触发器应该可以工作,但它保持默认的灰色。我知道触发器有效,因为我测试了更改背景并且它有效。关于如何解决这个问题的任何想法?

请注意我使用的是 mahapps 样式。

【问题讨论】:

  • 查看您的代码,在第一行中您将前景设置为黑色,当它被禁用时,它也设置为黑色,这是正确的吗?你想改变它的颜色,但它被设置为相同的颜色

标签: wpf xaml listview gridview


【解决方案1】:

将带有“GrayNormalBrush”的x:KeyBrush 添加到&lt;ListView.Resources&gt;

<ListView Grid.ColumnSpan="2" Grid.Row="3" ItemsSource="{Binding Lote_Entrada_Viscera.Detalle_Entrada_Viscera}" IsEnabled="False" Foreground="Black">
    <ListView.Resources>
        <SolidColorBrush x:Key="GrayNormalBrush" Color="Black" />
    </ListView.Resources>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource MetroListViewItem}">
            <Setter Property="Background" Value="Green"></Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Completo}" Value="False">
                    <Setter Property="Background" Value="Red"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        ...
    </ListView.View>
</ListView>

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2016-07-17
    • 2015-09-28
    • 2012-04-11
    • 2022-09-29
    • 2012-02-23
    • 1970-01-01
    • 2012-05-21
    • 2011-05-07
    相关资源
    最近更新 更多