首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏悬停并单击UniformGrid事件?

如何隐藏悬停并单击UniformGrid事件?
EN

Stack Overflow用户
提问于 2021-11-30 09:48:52
回答 2查看 74关注 0票数 0

我尝试使用ListBoxUniformGrid创建带有两列的按钮列表。在我面临以下问题之前,一切似乎都很好。当我单击或悬停在按钮上时,按钮的边缘空间会以浅蓝色显示。如何消除这种影响?

这是我的密码:

代码语言:javascript
复制
<ListBox Width="1000" Grid.Row="1" VerticalAlignment="Top" VerticalContentAlignment="Top" Name="uniformGrid1" Margin="50" ItemsSource="{Binding SomeItemsList}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="2" Background="Transparent"   Name="uniformGrid1"></UniformGrid>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Margin="50" Height="70" Click="keyword_Click" Width="250"
         Foreground="Black" FontSize="16" FontFamily="Helvetica Neue" FontWeight="Bold"
        BorderBrush="SlateGray" Content="{Binding Name}">
                <Button.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="White" Offset="0.073" />
                        <GradientStop Color="White" Offset="1" />
                        <GradientStop Color="#FFE9E9F9" Offset="0.571" />
                        <GradientStop Color="#FFD7D7EC" Offset="0.243" />
                    </LinearGradientBrush>
                </Button.Background>
            </Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-30 10:47:21

ItemsSource中的每个项都被包装在ListBox中的一个ListBoxItem中。ListBox是从Selector派生的控件,它是允许选择项的项的基本类型。

表示允许用户从其子元素中选择项的控件。

您指定的DataTemplate将在运行时放置在ListBoxItem中,这是内容的容器。这个容器有一个默认样式和控制模板,它定义了它的外观和可视状态。您看到的是MouseOver状态和所选状态。您可以通过提取默认样式ListBoxItem进行更改,并对其进行调整或编写自己的。

然而,似乎你的意图是不同的。您可能希望的是,根据绑定集合的不同,简单地在UniformGrid中显示按钮,而不需要任何选择。您可以通过使用ItemsControl来实现这一点。它不提供任何选择功能,但允许您将集合绑定到UniformGrid作为项面板。

代码语言:javascript
复制
<ItemsControl Width="1000" Grid.Row="1" VerticalAlignment="Top" VerticalContentAlignment="Top" Margin="50" ItemsSource="{Binding SomeItemsList}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="2" Background="Transparent" Name="uniformGrid1"></UniformGrid>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Margin="50" Height="70" Click="keyword_Click" Width="250"
         Foreground="Black" FontSize="16" FontFamily="Helvetica Neue" FontWeight="Bold"
        BorderBrush="SlateGray" Content="{Binding Name}">
                <Button.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="White" Offset="0.073" />
                        <GradientStop Color="White" Offset="1" />
                        <GradientStop Color="#FFE9E9F9" Offset="0.571" />
                        <GradientStop Color="#FFD7D7EC" Offset="0.243" />
                    </LinearGradientBrush>
                </Button.Background>
            </Button>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

请注意,我删除了两个Name="uniformGrid1"中的一个,因为重复的名称会导致编译错误。如果您的内容超过了视区,并且需要滚动条,则必须添加ScrollViewer,因为这是内置在ListBox中的,而不是ItemsControl中的。

代码语言:javascript
复制
<ScrollViewer HorizontalScrollBarVisibility="Auto"
              VerticalScrollBarVisibility="Auto">
   <ItemsControl  Width="1000" Grid.Row="1" VerticalAlignment="Top" VerticalContentAlignment="Top" Margin="50" ItemsSource="{Binding SomeItemsList}">
      <!-- ...other code. -->
   </ItemsControl>
</ScrollViewer>
票数 0
EN

Stack Overflow用户

发布于 2021-11-30 10:22:28

这里的问题是,ListBox有一个选择,并且选中的项目被高亮显示。您需要禁用此高亮显示以获得所需的结果,例如将ListBox.ItemContainerStyle设置为所描述的在这个答案中。这将移除(淡蓝色)选择颜色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70167279

复制
相关文章

相似问题

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