listbox 相关问题

一个图形用户界面元素,允许用户从列表中选择一个或多个项目。

如何在 ListBox 中的每个 ListBoxItem 之间放置分隔符?

这是我的 XAML: 这是我的 XAML: <ListBox Grid.Row="1" x:Name="lstGames" Background="#343434" > <ListBox.ItemTemplate> <DataTemplate> <Grid ShowGridLines="True"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Image Grid.Column="0" Source="{Binding ImageUrl}" Width="100"/> <StackPanel Grid.Column="1"> <StackPanel Orientation="Horizontal"> <TextBlock Text="Title:" /> <TextBlock Text="{Binding Title}" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="Release Date:" /> <TextBlock Text="{Binding ReleaseDate}" /> </StackPanel> </StackPanel> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> Sans 在 DataTemplate 中放置一个矩形并为其赋予颜色,ListBox 是否有某种方法可以在每个项目之间本机设置某些内容? 这是一个更好的例子,因为顶部没有分隔符 <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <StackPanel> <Separator x:Name="Separator"/> <ContentPresenter/> </StackPanel> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> <Setter Property="Visibility" TargetName="Separator" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListBox.ItemContainerStyle> 这建立在 @EvaLacy 给出的答案的基础上,更加完整一些。 因为该答案替换了 ListBoxItem 的模板,所以它禁用了选择列表项时发生的内置突出显示(因为突出显示是通过原始模板中的触发器完成的)。要恢复此功能,请将默认触发器放入新模板中并稍微调整模板内容: <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <StackPanel> <Separator x:Name="Separator"/> <!-- Bind to parent properties --> <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="Bd" SnapsToDevicePixels="True"> <ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> </Border> </StackPanel> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> <Setter Property="Visibility" TargetName="Separator" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> <!-- Original Triggers --> <Trigger Property="Selector.IsSelected" Value="True"> <Setter TargetName="Bd" Property="Panel.Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> <Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="Selector.IsSelected" Value="True" /> <Condition Property="Selector.IsSelectionActive" Value="False"/> </MultiTrigger.Conditions> <Setter TargetName="Bd" Property="Panel.Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" /> <Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> </MultiTrigger> <Trigger Property="UIElement.IsEnabled" Value="False"> <Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> </Trigger> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListBox.ItemContainerStyle> 我使用旧的但有用的向我展示模板应用程序检索了这些触发器。 我的解决方案: <Style x:Key="STYLE_ListBoxSubItem" TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> <Setter Property="SnapsToDevicePixels" Value="true"/> <Setter Property="OverridesDefaultStyle" Value="true"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <DockPanel LastChildFill="True"> <Separator x:Name="Separator" DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="2"/> <Border x:Name="Border" SnapsToDevicePixels="true"> <ContentPresenter VerticalAlignment="Center" /> </Border> </DockPanel> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}"> <Setter Property="Visibility" TargetName="Separator" Value="Collapsed"/> </DataTrigger> <Trigger Property="IsSelected" Value="true"> <Setter TargetName="Border" Property="Background" Value="Orange"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="#888888"/> </Trigger> <Trigger Property="Control.IsMouseOver" Value="True"> <Setter TargetName="Border" Property="Background" Value="LightGray"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <!-- Usage --> <ListBox ItemContainerStyle="{StaticResource STYLE_ListBoxSubItem}"/> 您可以将分隔符的呈现移动到 ListBoxItem 控制模板中,如这个有意简化的示例所示: <Grid> <Grid.Resources> <PointCollection x:Key="sampleData"> <Point>10,20</Point> <Point>30,40</Point> <Point>50,60</Point> </PointCollection> </Grid.Resources> <ListBox ItemsSource="{StaticResource sampleData}"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <StackPanel> <Separator/> <ContentPresenter/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> 这将使分隔符远离您的项目模板。代价是您可能需要从默认的 ListViewItem 控件模板复制更多内容才能满足您的需求。当然,Separator 是可视化渲染分隔符的十几种方法之一。 我们现在已经到达 Avalonia 11,您不再需要覆盖默认模板(默认模板可能会随时更改,然后您的覆盖可能会中断)。您现在可以设置默认模板的某些元素的样式。 <ListBox ItemsSource="{Binding Documents}"> <ListBox.Styles> <Style Selector="ListBoxItem"> <Setter Property="BorderBrush" Value="Black" /> <Setter Property="BorderThickness" Value="0,0,0,1" /> <Style Selector="^:nth-child(1)"> <Setter Property="BorderThickness" Value="0,1,0,1" /> </Style> </Style> </ListBox.Styles> 这为每个 ListBoxItem 提供了 1 的下边框,除了第一个也有上边框。

回答 5 投票 0

更改列表框中数据绑定文本块的前景色

我正在尝试根据绑定值更改列表框中数据绑定 TextBlock 的前景色。 我的代码如下:xaml 我正在尝试根据绑定值更改 TextBlock 中数据绑定 ListBox 的前景色。 我的代码如下:xaml <Grid.Resources> <converters:ColorConverter x:Key="ColorConverter"/> </Grid.Resources> <ListBox> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Name="TitleText"> <Run Foreground="{Binding Type, Converter={StaticResource ColorConverter}}" Text="&#x20b9;" /> </TextBlock> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 颜色转换器类: public class ColorConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) { String Value = (String)value; if (Value.Equals("Credit")) return Colors.Green; else return Colors.Red; } return null; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 当我运行代码时,没有错误,但颜色不会改变。 Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua。发酵蛋白 leo vel orci porta non pulvinar neque laoreet。 Commodo elit 坐在不准的位置。 Vulputate eu scelerisque felis imperdiet proin发酵leo vel orci。 Mattis ullamcorper velit sed ullamcorper morbi Tincidunt ornare Massa。 Sapien faucibus et molestie ac feugiat sed lectus. Id aliquet risus feugiat in ante metus: <TextBlock FontSize="12" FontWeight="Bold" Foreground="White"> <TextBlock.Text> <Binding XPath="Title"/> </TextBlock.Text> </TextBlock> ... sodales ut eu sem 整数: using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } Ut enim ad minim veniam,quis nostrud 实习 ullamco labouris nisi ut aliquip ex ea commodo consequat..

回答 1 投票 0

python 2.7 gtk 3+ 列表框连接打印活动行

我刚刚下载了 gtk3+,并且正在处理以下示例代码: https://python-gtk-3-tutorial.readthedocs.io/en/latest/layout.html#listbox 这是示例代码: 进口地理标志 GI.

回答 2 投票 0

为什么 DataTrigger 只适用于列表框中的最后一个元素?

我试图找到这个问题的答案(列表框项目根据视图模型属性显示复选框或单选按钮),我遇到了一个非常奇怪的行为。 如果我使用 DataTrigg...

回答 1 投票 0

VBA 用户窗体列表框 - 运行时错误 380。无法设置列表属性。无效的属性值

我已经使用“错误时继续下一步”一段时间来“跳过”此错误,因为尽管存在错误,我仍然得到了正确的结果。然而,现在,我有一个新问题需要解决,...

回答 1 投票 0

ListBox 小部件移动未定义的项目

我正在使用 Kendo-UI for jQuery,版本 2021.1.119。 我遇到的问题是,我可以初始化 ListBox 小部件并显示初始状态,但是当我尝试从一个 ListB 中移动一项时...

回答 1 投票 0

Tkinter 面向对象

我是 Tkinter 模块的新手,我尝试在 Tkinter 中使用 OOP。我的代码没有错误,但列表框小部件没有输出,这是我的代码: 从 tkinter 导入 * 类测试: 字=“”...

回答 1 投票 0

动态添加列表框项目时出现问题

我正在尝试向 ModelB 上的 ListBox 添加一条来自 ModelA 的消息 1.- 每当 ModelA 上发生触发时, A型 公共字符串消息 { 获取=>_消息; 放 {

回答 1 投票 0

WPF - 如何使 ListBox 在 MVVM 中运行“选择时”功能? [Caliburn.Micro]

我正在制作一个统计绘图辅助程序。我是 WPF 的新手。 我已经有 2 个列表框: 简介列表 比赛文件夹列表 首先,我想从第一个中选择(选择)个人资料

回答 1 投票 0

WPF - 如何使 ListBox 在 MVVM 中“选择时”运行函数?

我正在制作一个统计绘图辅助程序。我是 WPF 的新手。 我已经有 2 个列表框: 简介列表 比赛文件夹列表 首先,我想从第一个中选择(选择)个人资料

回答 1 投票 0

PyQt 5 应用程序因未知原因崩溃和/或故障

所以,我有一个程序,其中有一个充满项目的列表小部件。双击(激活)该项目时,会出现一条消息,然后该项目消失,如果我单击“加载!...

回答 1 投票 0

如何在 ListBox WinForm 中将值拆分为单独的行?

如何在ListBox WinForm中将值拆分成单独的行,但将它们保留在一行中 foreach(allBus 中的 var 总线) { string busRouteInfoText = $"Название маршрута: {bus[1]} ” + ...

回答 1 投票 0

使用 MS Access VBA 使用记录集填充表单中的列表框

我正在尝试使用 MS Access 中的 VBA 填充表单中的列表框。 列表框不会被填充。 私有子表单_Load() 链接订单 = 链接订单列表 qGetLinks = "选择 *Vari...

回答 1 投票 0

如何删除列表框中的多个选择?

所以我有一个用户表单,其中包含: 名为“lstentries”的列表框 名为“删除”的单选按钮。 此外,“开始”是行表左上角的单元格的名称。 我已经...

回答 3 投票 0

如何创建和呈现带有部分斜体文本的ListboxItems

在这里,我想以某种方式设置列表框项目的样式,即向某些项目添加一点斜体注释,如下图所示。 让我接近的是使用内联项目列表作为 ItemsSo...

回答 1 投票 0

如何在WPF中实现复选框列表框?

尽管在编写 Winforms 应用程序方面有一些经验,但 WPF 在最佳实践和设计模式方面的“模糊性”仍然让我困惑。 尽管在运行时填充了我的列表,但我的

回答 7 投票 0

如何使用 SendMessage 填充列表框?

我试图用从文本文件中读取的数据填充列表框,但没有运气。我尝试了几种方法来执行 SendMessage (请参见下文),但得到相同的“无效的强制转换类型&...

回答 1 投票 0

C++ 使用 SendMeassage 填充列表框

我试图用从文本文件中读取的数据填充列表框,但没有运气。我尝试了几种方法来执行 SendMessage (请参见下文),但得到相同的“无效的强制转换类型...

回答 1 投票 0

VBA 列表框 - 所选值返回空白

我有一个带有一些单选按钮和两个单列列表框的用户窗体。在某些情况下,我无法从第二个列表框返回值。 如果用户选择其中之一...

回答 3 投票 0

如何永久更改列表中的项目?

我在 tkinter 中有一个程序,其中有一个列表,我将列表项传输到列表框。 当我运行它时,有一个列表框,您可以通过按按钮和

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.