【问题标题】:More highlighted items in a listbox列表框中更多突出显示的项目
【发布时间】:2013-06-12 06:00:36
【问题描述】:

我有一个ListBox,其中放置了数据。简单的字符串,没有什么极端的。但是,用户可以选择数据是什么,他可以选择两个不同的 (!!!) 对象,它们具有相同的名称。

示例:与图片连接使用。每张照片都有一个名字。用户选择图片并将它们添加到列表框中。但是,如果他选择了两张同名的图片,就会发生在列表框中选择项目的情况:

我应该怎么做才能避免这种情况?我只想要一个突出显示和选定的项目。 列表框设置在单个选择上,并且在选择事件上,它表示只选择了一个项目。所以它只涉及亮点。 (使用 WPF、C#)

【问题讨论】:

  • 你能告诉我们你的列表框声明吗?
  • 只是让名称不同(添加(1)(2)、...)怎么样?
  • 列表框声明:
  • 不幸的是,这会在用户方面造成混乱

标签: c# wpf listbox highlight


【解决方案1】:

为避免这种情况,您必须在字符串周围使用包装器;您的 图片 对象似乎是一个好的开始。

以下是说明这两种方法的示例:

XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:local="clr-namespace:WpfApplication1">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <ListBox x:Name="list1" ItemsSource="{Binding Pictures1}" />
        <ListBox x:Name="list2" ItemsSource="{Binding Pictures2}" Grid.Column="1" DisplayMemberPath="Name" />
        <TextBox Text="{Binding Text}" Grid.Row="1"/>
        <Button Content="+" Grid.Row="1" Grid.Column="1" Click="Button_Click"/>
    </Grid>
</Window>

后面的代码:

using System.Windows;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Controls;
using System.Collections.ObjectModel;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public class Picture
        {
            public string Name { get; set; }
        }

        public string Text { get; set; }
        public ObservableCollection<string> Pictures1 { get; set; }
        public ObservableCollection<Picture> Pictures2 { get; set; }

        public MainWindow()
        {
            InitializeComponent();

            Pictures1 = new ObservableCollection<string>();
            Pictures2 = new ObservableCollection<Picture>();

            DataContext = this;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Pictures1.Add(Text);
            Pictures2.Add(new Picture { Name = Text });

            list1.SelectedItem = Pictures1[0];
            list2.SelectedItem = Pictures2[0];
        }
    }
}

您还可以绑定更多信息,例如扩展名、大小或任何可以帮助用户的属性。

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多