首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变ListView自定义元素的不透明度

如何改变ListView自定义元素的不透明度
EN

Stack Overflow用户
提问于 2014-04-04 07:40:10
回答 4查看 912关注 0票数 0

我有列表视图,我想设置一些元素的opacity,但不幸的是,在ListViewItem上设置opacity不起作用.

代码语言:javascript
复制
<Style x:Name="TileStyle" TargetType="ListView">
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid Width="185"
                          Height="85"
                          Margin="20"
                          Background="Red"
                          Opacity="0.1">
                        <TextBlock Text="fasada" />
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
代码语言:javascript
复制
   <ListView x:Name="XListView"
          ItemsSource="{Binding li}"
          Style="{StaticResource TileStyle}" />

只有当我为ListView对象设置一个不透明度时,它才能工作。

我发现文章描述了类似的问题,但是XListView.Items[i]只是int,所以我不能设置它的Opacity.

更新

我忘了说这是Windows-8.1的程序,所以某些WPF属性可能不受支持。

EN

回答 4

Stack Overflow用户

发布于 2014-04-04 07:50:15

卢卡斯兹:-)

要成功地将不透明度应用于您的ListViewItem,您需要如下所示

代码语言:javascript
复制
<Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Opacity" Value="1.0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <Border Name="Border" Padding="2" SnapsToDevicePixels="true" Background="Transparent" CornerRadius="15">
                        <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>
                            <Setter Property="Opacity" Value="0.4"/>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                            <Setter Property="Background" Value="WhiteSmoke"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

试一试,让我们知道。HTH

更新

在看到你需要的新信息后

代码语言:javascript
复制
<Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Opacity" Value="{Binding VM.Property}"/>
    </Style>

尽管这需要列表中的每一项来定义不透明度。您可以始终使用fallbackValue使用默认的不透明度= 1.0

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 07:54:18

举个例子。项目的视图模型:

代码语言:javascript
复制
public class Item
{
    public double Opacity {get;set;}
    public string Value {get;set;}
}

ListView xaml代码:

代码语言:javascript
复制
<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="Opacity" Value="{Binding Opacity}" />
            <Setter Property="Content" Value="{Binding Value}" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

如果您想在运行时更改不透明度,则应该为您的INotifyProperyChanged类实现Item

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 12:40:45

我认为您希望更改listview元素的不透明度,即listviewitem,因此您需要更改listviewitem样式,即Listview Item收集器样式,通过编辑listview项目模板,您可以将不透明度设置为元素。我正在使用网格为listviewitem style.Hope显示3种解决方案,这很有帮助。

代码语言:javascript
复制
    <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <!--****************************1st method*******************************-->
    <ListView x:Name="XListView" Grid.Column="0" ItemsSource="{Binding li}" >
        <ListView.Resources>
            <Style TargetType="ListViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListViewItem">
                            <Grid Width="185" Height="85" Margin="20" Background="Red" Opacity="0.1">
                                <TextBlock Text="TextData"/>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.Resources>
        <ListViewItem>ListviewItemData1</ListViewItem>
    </ListView>
    <!--**************************2nd method***********************************-->
    <ListView  Grid.Column="1" ItemsSource="{Binding li}" >
        <ListView.Resources>
            <Style TargetType="ListViewItem">
                <Setter Property="ContentTemplate" >
                    <Setter.Value>
                        <DataTemplate>
                            <Grid Width="185" Height="85" Margin="20" Background="Red" Opacity="0.1">
                                <TextBlock Text="TextData"/>
                            </Grid>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.Resources>
        <ListViewItem>ListviewItemData1</ListViewItem>
    </ListView>
    <!--*****************3rd method*****************-->
    <ListView Grid.Column="2">
        <ListViewItem >
            <ListViewItem.Template>
                <ControlTemplate TargetType="ListViewItem">
                    <Grid Width="185" Height="85" Margin="20" Background="Red" Opacity="0.1">
                        <TextBlock Text="TextData"/>
                    </Grid>
                </ControlTemplate>
            </ListViewItem.Template>
        </ListViewItem>
    </ListView>
</Grid>

你也可以设置这样的不透明度。

代码语言:javascript
复制
 <SolidColorBrush x:Key="RedBrush" Color="Red" Opacity="0.1"></SolidColorBrush>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22856526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档