标签: listbox

根据ListBox.SelectedIndex在WPF中启用按钮

我有一个相当经典的UI情况 - 两个ListBoxes命名SelectedItemsAvailableItems- 这个想法是你已经选择SelectedItems的项目存在,而可用于添加的项目SelectedItems(即每个尚未存在的项目)都存在AvailableItems.

此外,我有<>按钮将当前选择从一个列表移动到另一个列表(除了双击,它工作正常).

是否可以在WPF中设置样式/触发器以启用或禁用移动按钮,具体取决于在ListBox中选择的任何内容?SelectedItems在左侧,因此<按钮会将所选内容移动AvailableItems到该列表.但是,如果没有选择任何项目(AvailableItems.SelectedIndex == -1),我希望禁用此按钮(IsEnabled == false) - 而另一个列表/按钮则相反.

这可以直接在XAML中完成,还是需要在代码隐藏中创建复杂的逻辑来处理它?

wpf listbox

28
推荐指数
2
解决办法
2万
查看次数

Silverlight 3:ListBox DataTemplate Horizo​​ntalAlignment

我有一个ListBox,它的ItemTemplate绑定到DataTemplate.我的问题是我无法将模板中的元素拉伸到ListBox的整个宽度.

<ListBox x:Name="listPeople" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
    Margin="0,0,0,0" Background="{x:Null}" SelectionMode="Extended" Grid.Row="1" 
    ItemTemplate="{StaticResource PersonViewModel.BrowserDataTemplate}" 
    ItemsSource="{Binding Mode=OneWay, Path=SearchResults}" >
</ListBox>

<DataTemplate x:Key="PersonViewModel.BrowserDataTemplate">
   <ListBoxItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
     <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5">
       <Border Opacity=".1" x:Name="itemBorder"  Background="#FF000000"   
         HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
         CornerRadius="5,5,5,5" MinWidth="100" Height="50"/>
      </Grid>
   </ListBoxItem>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

如您所见,我在网格中添加了一个边框以指示模板的宽度.我的目标是看到此边框扩展到列表框的整个宽度.目前它的宽度由其内容或MinWidth决定,这是目前保持可见的唯一内容.

silverlight listbox datatemplate controltemplate

28
推荐指数
2
解决办法
3万
查看次数

ListBox选择所有项目

单击CheckBox时,我需要选择ListBox中的所有项目.是否可以使用一行代码选择ListBox中的所有项目?或者我是否必须遍历所有项目并将其中的每一项设置为true?

谢谢 :)

c# listbox .net-2.0 winforms

27
推荐指数
4
解决办法
6万
查看次数

如何实现淡入/淡出添加/删除的ListItems

假设我有一个ListBox绑定ObservableCollection,我想动画添加/删除ListBoxItems例如.FadeIn/Out,SlideDown/Up等.我该怎么做?

wpf animation listbox

27
推荐指数
2
解决办法
2万
查看次数

我的ListBox中的项之间的差距

当我ListBox使用水平项目创建时,例如:

<DockPanel>
    <ListBox>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBoxItem>
            <Button Content="Hello" />
        </ListBoxItem>
        <ListBoxItem>
            <Button Content="Hello" />
        </ListBoxItem>
    </ListBox>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

我在列表中的按钮之间有小间隙,如下图中的箭头所示:

图片显示差距

我怎么能摆脱这些差距呢?我需要ListBox彼此相邻的物品.我试图改变ItemTemplateListBox,但它并没有帮助.

.net wpf listview listbox wpf-controls

27
推荐指数
2
解决办法
2万
查看次数

当我在ListBox中有图像时,为什么会出现OutOfMemoryException?

我想在我的自定义库中显示存储在Windows Phone 8照片文件夹中的所有图像,该图库ListBox用于显示图像.

ListBox代码如下:

    <phone:PhoneApplicationPage.Resources>
        <MyApp:PreviewPictureConverter x:Key="PreviewPictureConverter" />
    </phone:PhoneApplicationPage.Resources>

    <ListBox Name="previewImageListbox" VirtualizingStackPanel.VirtualizationMode="Recycling">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel CleanUpVirtualizedItemEvent="VirtualizingStackPanel_CleanUpVirtualizedItemEvent_1">
                </VirtualizingStackPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Image Source="{Binding Converter={StaticResource PreviewPictureConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
     </ListBox>
Run Code Online (Sandbox Code Playgroud)

使用以下转换器:

public class PreviewPictureConverter : System.Windows.Data.IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        PreviewImageItem c = value as PreviewImageItem;
        if (c == null)
            return null;
        return c.ImageData;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) …
Run Code Online (Sandbox Code Playgroud)

c# listbox out-of-memory photo-gallery windows-phone-8

27
推荐指数
2
解决办法
1万
查看次数

拖动时WPF列表框自动滚动

我有一个WPF应用程序ListBox.拖动机制已经实现,但是当列表太长并且我想将项目移动到不可见的位置时我不能.

例如,屏幕显示10个项目.我有20件物品.如果我想将最后一项拖到第一个位置,我必须拖到顶部并放下.向上滚动并再次拖动.

如何进行ListBox自动滚动?

c# wpf scroll listbox drag

26
推荐指数
2
解决办法
1万
查看次数

带有ListBox的WPF ListBox - UI虚拟化和滚动

我的原型显示"文档",其中包含由缩略图图像表示的"页面".每个文档可以包含任意数量的页面.例如,可能有1000个文档,每个文档有5个页面,或者5个文档,每个文档有1000个页面,或者介于两者之间.文件不包含其他文件.在我的xaml标记中,我有一个ListBox,其ItemsTemplate 引用的innerItemsTemplate也有一个ListBox.我想要2级选定的项目,以便我可以对文档或页面执行各种操作(删除,合并,移动到新位置等).innerItemsTemplate ListBox使用a WrapPanel作为ItemsPanelTemplate.

对于我有大量文档的情况,每个文档都有几个页面(比如10000个文档,每个页面有5个页面),滚动工作非常好,这要归功于UI虚拟化VirtualizingStackPanel.但是,如果我有大量的页面,我会遇到问题.具有1000页的文档一次仅显示约50个(无论何种适合屏幕),当我向下滚动时,外部ListBox移动到下一个文档,跳过不可见的950页左右.除此之外,VirtualzingWrapPanel应用程序内存确实没有 增加.

我想知道我是否以正确的方式解决这个问题,特别是因为它有点难以解释!我希望能够显示10000个文档,每个文档1000页(仅显示适合屏幕的任何内容),使用UI虚拟化,以及平滑滚动.

如何在显示下一个文档之前确保滚动在文档中的所有页面中移动,并且仍然保持UI虚拟化?滚动条似乎只移动到下一个文档.

表示"文档"和"页面"似乎合乎逻辑 - 使用我当前ListBox在a 中使用a的方法ListBox

我非常感谢你的任何想法.谢谢.

wpf virtualization user-interface scroll listbox

26
推荐指数
4
解决办法
2万
查看次数

在wpf中禁用itemscontrol上的鼠标滚轮

我有一个usercontrol,它有一个scrollviewer,然后是一堆子控件,如文本框,单选按钮和列表框等.我可以使用鼠标滚轮滚动父滚动查看器,直到我的鼠标落入列表框,然后,鼠标滚轮事件开始进入列表框.是否有任何方法让列表框将这些事件发送回父控件?从父控件的内侧删除列表框就像这个问题所示(当ScrollViewer的子控件超过时鼠标滚轮不工作)不是一个解决方案.

我试过了

void ListBox_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
    {
        e.Handled = true;
    }
Run Code Online (Sandbox Code Playgroud)

但那也没有用.

谢谢

.net c# wpf scrollwheel listbox

26
推荐指数
4
解决办法
2万
查看次数

编号列表框

我有一个已排序的列表框,需要显示每个项目的行号.在这个演示中,我有一个带有Name字符串属性的Person类.列表框显示按名称排序的人员列表.如何添加到列表框的datatemplate行号?

XAML:

<Window x:Class="NumberedListBox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <ListBox 
        ItemsSource="{Binding Path=PersonsListCollectionView}" 
        HorizontalContentAlignment="Stretch">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using System;
using System.Collections.ObjectModel;
using System.Windows.Data;
using System.Windows;
using System.ComponentModel;

namespace NumberedListBox
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            Persons = new ObservableCollection<Person>();
            Persons.Add(new Person() { Name = "Sally"});
            Persons.Add(new Person() { Name = "Bob" });
            Persons.Add(new Person() { Name = "Joe" });
            Persons.Add(new Person() { Name = "Mary" });

            PersonsListCollectionView = …
Run Code Online (Sandbox Code Playgroud)

c# wpf listbox

24
推荐指数
2
解决办法
2万
查看次数