精华内容
下载资源
问答
  • WPF listBox 漂亮的listBOX

    2015-10-10 09:16:25
    WPF listBox 漂亮的listBOX
  • WPF listbox 平滑滚动

    2018-09-05 15:32:44
    WPF listbox 平滑滚动
  • [WPF] ListBox内容的功能

    2019-07-07 19:55:34
    WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能。 该行为实际上有四个独立的部分,可以在一个类中执行不同的功能: 添加项目,将所选项目向上移动一个位置 将所选项目向下移动一个位置,删除所选项目。...

    WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能

    该行为实际上有四个独立的部分,可以在一个类中执行不同的功能:

    添加项目,将所选项目向上移动一个位置

    将所选项目向下移动一个位置,删除所选项目。

    每个函数的代码结构非常相似,只有一些细节不同。

    代码:定义DependencyProperty:

    public static readonly DependencyProperty MoveItemUpProperty =

        DependencyProperty.RegisterAttached("MoveItemUp",

            typeof(Selector), typeof(ListHelperBehavior),

                new PropertyMetadata(null, OnMoveItemUpChanged));

    public static Selector GetMoveItemUp(UIElement uiElement)

    { return (Selector)uiElement.GetValue(MoveItemUpProperty); }

    public static void SetMoveItemUp(UIElement uiElement, Selector value)

    { uiElement.SetValue(MoveItemUpProperty, value); }

    用于为包含列表的Selector(或ListBox)控件提供绑定。它用于Button执行动作,在这种情况下是将所选项目向上移动一个位置。对于这个动作的代码需要有机会获得ItemsSourceSelectedIndexSelector控制,首先要真正能够做到移动,第二知道要移动的项目。

    DependencyProperty更改时,将OnMoveUpItemChanged执行事件处理程序。此事件处理程序在DependencyPropertyRegisterAttached方法的FrameworkMetadata参数中指定。

    代码:

    private static void OnMoveItemUpChanged(DependencyObject d,

        DependencyPropertyChangedEventArgs e)

    {

        if (e.OldValue is Selector Selector1)

        {

            Selector1.SelectionChanged -= SetMoveItemUpButtonIsEnabled;

        }

        if (e.NewValue is Selector Selector)

        {

            var Button = CheckForButtonBase(d);

            Button.Click -= MoveItemUpEvent;

            Button.Click += MoveItemUpEvent;

            Selector.SetValue(MoveUpButton, Button);

            Selector.SelectionChanged += SetMoveItemUpButtonIsEnabled;

            SetMoveItemUpButtonIsEnabled(Selector, null);

        }

    }

    Button通过使用SelectionChanged事件处理程序调整IsEnabled值。

    为的保存代码ButtonSelector被下面的私人DependencyProperty从而使Button被启用和禁用。

    Click事件Button的下移功能:

    private static void MoveItemUpEvent(object sender, RoutedEventArgs e)

    {

        Debug.Assert(sender is ButtonBase);

        var Button = (ButtonBase)sender;

        var Selector = GetMoveItemUp(Button);

        var IList = CheckForIList(Selector);

        var itemNumber = Selector.SelectedIndex;

        var item = IList[itemNumber];

        IList.RemoveAt(itemNumber);

        var type = IList.GetType().GetGenericArguments().Single();

        var castInstance = Convert.ChangeType(item, type);

        IList.Insert(itemNumber - 1, castInstance);

        if (itemNumber == 1) Button.IsEnabled = false;

        Selector.SelectedIndex = itemNumber - 1;

    }

    sender参数必须强制转换为ButtonBase类型,然后用于获取Selector作为ButtonBase中附加属性保存的控件的值。然后使用它来获取IList绑定到Selector ItemsSource DependencyPropertySelectedItem值和值SelectorIList然后复制所选项目,转换为正确的类型(使用Type类的Reflection GetGenericArgument方法获取类型,然后使用Convert.ChangeType方法将其强制转换),然后从IList(RemoveAt方法)中删除IList)。然后使用该Selector Insert方法插入删除的项目。

    最后,有适当的代码启用或禁用Button取决于是否存在SelectedItemSelectedItem是第一个(用于上移)或最后一个项目IList(用于下移)。这是SelectedItemSelector触发事件时调用的事件处理程序:

    private static void SetMoveItemUpButtonIsEnabled(object sender, RoutedEventArgs e)

     {

     <code>    Debug.Assert(sender is Selector);

         var Selector = (Selector)sender;

         var IList = CheckForIList(Selector);

         var itemNumber = Selector.SelectedIndex;

         var Button = (ButtonBase) Selector.GetValue(MoveUpButton);

         Button.IsEnabled = (itemNumber >= 1 && itemNumber < IList.Count);

     }</code>

    展开全文
  • WPFlistbox的用法

    万次阅读 2017-12-22 10:11:25
    1、listbox数据绑定 1)后台数据绑定namespace WpfListBoxTest { /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { public MainWindow()

    1、listbox数据绑定
    1)后台数据绑定

    namespace WpfListBoxTest
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                this.listBox.ItemsSource = GetNumber();
            }
            private List<int> GetNumber()
            {
                List<int> listNumber = new List<int>();
                for(int i=0;i<99;i++)
                {
                    listNumber.Add(i);
                }
                return listNumber;
            }
        }
    }
    <Grid>
            <ListBox Name="listBox"></ListBox>
        </Grid>

    2)前台数据绑定
    如果是用的类来存储数据

    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();            
                this.listBox.ItemsSource=GetNumber();
            }
            private List<Model> GetNumber()
            {
                List<Model> listNumber = new List<Model>();
                for(int i=0;i<99;i++)
                {
                    listNumber.Add(new Model() { Number=i});
                }
                return listNumber;
            }
        }
        public class Model
        {
            public int Number { get; set; }
        }
    <Grid>
            <ListBox Name="listBox" DisplayMemberPath="Number"></ListBox>
        </Grid>

    一般第二种情况用的更多一些。
    2、ListBox加上单选的radiobutton
    这里用上了style这个属性。

    <Window.Resources>
            <Style x:Key="radioButtonStyle" TargetType="{x:Type ListBox}">
                <Setter Property="ItemContainerStyle">
                    <Setter.Value>
                        <Style TargetType="{x:Type ListBoxItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ListBoxItem">
                                        <RadioButton Focusable="False" IsChecked="{Binding Path=IsSelected,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}">
                                            <ContentPresenter></ContentPresenter>
                                        </RadioButton>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
        <Grid>
            <ListBox Name="listBox" Style="{StaticResource radioButtonStyle}" DisplayMemberPath="Number">            
            </ListBox>
        </Grid>

    这里写图片描述
    3、ListBox加上CheckBox,只需要稍微修改一下上面的代码即可

    <Window.Resources>
            <Style x:Key="checkBoxStyle" TargetType="{x:Type ListBox}">
                <Setter Property="SelectionMode" Value="Multiple"></Setter>
                <Setter Property="ItemContainerStyle">
                    <Setter.Value>
                        <Style TargetType="{x:Type ListBoxItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ListBoxItem">
                                        <CheckBox Focusable="False" IsChecked="{Binding Path=IsSelected,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}">
                                            <ContentPresenter></ContentPresenter>
                                        </CheckBox>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
        <Grid>
            <ListBox Name="listBox" Style="{StaticResource checkBoxStyle}" DisplayMemberPath="Number">            
            </ListBox>
        </Grid>

    这里写图片描述

    展开全文
  • wpf定义ListBox样式

    千次阅读 2018-02-26 14:29:04
    wpf定义ListBox样式 首先创建ListBox &lt;ListBox Style="{StaticResource MenuListStyle}"&gt; &lt;ListBoxItem&gt;ggg&lt;/ListBoxItem&gt; &lt;ListBoxItem&gt;...

    wpf定义ListBox样式

    首先创建ListBox

    <ListBox Style="{StaticResource MenuListStyle}">
      <ListBoxItem>ggg</ListBoxItem>
      <ListBoxItem>dddd</ListBoxItem>
      <ListBoxItem>dddd</ListBoxItem>
      <ListBoxItem>dddd</ListBoxItem>
    </ListBox>
    

    之后添加样式文件MenuList.xaml

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:local="clr-namespace:GraphElementGenerationSYS.Resources">
        <Style TargetType="{x:Type ListBox}" x:Key="MenuListStyle">
            <Setter Property="Width" Value="250"/>
            <!--<Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="Red"/>-->
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border BorderBrush="Red" BorderThickness="1">
                            <ItemsPresenter></ItemsPresenter>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border Background="{TemplateBinding Background}">
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                     VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                     TextBlock.Foreground="{TemplateBinding Foreground}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
    
            <!-- 设置触发器 -->
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="true">
                    <Setter Property="Background" Value="Black"/>
                    <Setter Property="Foreground" Value="White"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Background" Value="LightGreen"/>
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ResourceDictionary>

    最后在App.xaml中拼接起来就OK了

        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary  Source="Resources/MenuList.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
    
        </Application.Resources>
    展开全文
  • WPF listbox之间拖动 drag&drop

    热门讨论 2014-10-22 21:40:40
    WPF 实现了两个listbox之间拖动,drag&drop,并且有上下按钮控制listbox里面元素的移动,还有拖动时边框变色,1分,你值得拥有。
  • WPF listbox width自适应

    2014-12-01 09:40:41
    是关于listbox的宽度自适应问题。窗体放大,listbox的宽度以及里面的内容依然自适应。
  • wpflistbox控件 上下滚动的判断
  • 2021-08-08 WPF控件专题 ListBox控件详解

    万次阅读 2021-08-08 22:25:17
    1.ListBox控件介绍 其中包含可选择的项的列表 手动添加项 绑定数据源 两个ListBox中的项相互移动,不太适合指定ItemsSource,Items.Add方式添加项,可以灵活的添加或移除 2.具体案例 <Grid> <ListBox Name=...

    1.ListBox控件介绍

    其中包含可选择的项的列表

    手动添加项

    绑定数据源

    两个ListBox中的项相互移动,不太适合指定ItemsSource,Items.Add方式添加项,可以灵活的添加或移除

    2.具体案例

    <Grid>
        <ListBox Name="lbClasses" SelectionMode="Multiple" ItemsSource="{Binding}"  HorizontalAlignment="Left" Height="253" Margin="136,63,0,0" VerticalAlignment="Top" Width="263" SelectionChanged="LbClasses_SelectionChanged">
            <!--<ListBoxItem Content="软件班" IsSelected="True" ></ListBoxItem>
            <ListBoxItem Content="数据班" ></ListBoxItem>
            <ListBoxItem Content="英语班" ></ListBoxItem>-->
        </ListBox>
    </Grid>
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        //绑定数据源
        // lbClasses.ItemsSource = GetClassInfos();
        lbClasses.DataContext = GetClassInfos();
        lbClasses.DisplayMemberPath = "ClassName";
        lbClasses.SelectedValuePath = "ClassId";
        lbClasses.SelectedIndex = 0;
    
        //如果要动态添加、移除项,情况与ComboBox 
        //lbClasses.Items.Add(11);
        //lbClasses.Items.Add("aaaa");
    
    }
    
    private List<ClassInfo> GetClassInfos()
    {
        List<ClassInfo> list = new List<ClassInfo>();
        list.AddRange(new ClassInfo[]
        {
             new ClassInfo()
            {
                ClassId=1,
                ClassName="计算机一班"
            },
             new ClassInfo()
            {
                ClassId=2,
                ClassName="计算机二班"
            },
             new ClassInfo()
            {
                ClassId=3,
                ClassName="商务英语一班"
            },
              new ClassInfo()
            {
                ClassId=3,
                ClassName="商务英语二班"
            }
        });
        return list;
    }
    
    private void LbClasses_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //选择项类型  由绑定或添加时数据的类型决定
       // MessageBox.Show(lbClasses.SelectedItem.ToString());//字符串 int
        //实体类型
        ClassInfo selItem = lbClasses.SelectedItem as ClassInfo;
    
    }
    
    展开全文
  • WPF 带有checkbox的ListBox控件,支持绑定!
  • wpf ListBox拖动排序实现

    千次阅读 2018-12-30 11:16:57
    WpfApplication6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ...
  • wpf ListBox删除

    2020-12-19 12:18:15
    spi接口的ds1302时钟芯片控制在lcd1602上显示spi接口的ds1302时钟芯片控制在lcd1602上显示 ...Quartz定时任务学习(五)触发器顾名思义,Trigger(触发器)的责任就是触发一个 Job 去执行.当用 Scheduler 注...
  • • 如涉及侵权内容,您的资源将被移除 • 请勿上传小说、mp3、图片等与技术无关的内容.一旦发现将被删除 • 请勿在未经授权的情况下上传任何涉及著作权侵权的资源,除非该资源完全由您个人创作 • 点击上传资源即表示...
  • 特殊的 ListBox (WPF Code)

    千次阅读 2014-03-12 16:56:50
    特殊的 ListBox (WPF Code)
  • WPFListBox用法之一

    千次阅读 2014-03-25 00:10:44
    介绍ItemTemplate用法以及在ItemTemplate模板中使用ListBoxItem属性的方法。 ... C#代码: using System.Collections.ObjectModel; using System.Windows;...namespace ListBox用法 { /// /// MainW
  • WPFListBox用法之一 介绍ItemTemplate用法以及在ItemTemplate模板中使用ListBoxItem属性的方法。
  • wpf Binding ListBox

    2021-05-10 15:56:19
    ListBox获取选择项,加载数据并绑定 //Style <ControlTemplate TargetType="{x:Type ListBoxItem}"> <TextBlock Text="{Binding account}" Width="auto" Height="auto" /> //load ListBox users =new...
  • 实现上移下移功能,具体绑定一个数据源,操作数据源,最后把数据源赋值给数据源。
  • 原文:【WPF】拖拽ListBox中的Item整理了两个关于WPF拖拽ListBox中的Item的功能。项目地址 https://github.com/Guxin233/WPF-DragItemInListBox 需求一: 两个ListBox,拖拽其中一个ListBox的Item,放置到另一个...
  • WPF中ComboBox和ListBox控件在MVVMLight框架下绑定事件的方法 添加引用: 使用System.Windows.Interactivity.dll,添加该dll到项目引用 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System....
  • wpf ListBox 分页显示图片

    热门讨论 2012-12-04 12:04:49
    第一次上传自己的DMEO,望对名位有帮助~~
  • wpf实现Listbox分组功能,还可以级联
  • WPF ListBox添加右键

    2013-12-10 20:30:52
    WPF ListBox添加右键 一个很小的实例,希望对大家有帮助。
  • WPF ListBox示例

    千次阅读 2019-01-02 17:14:32
    ListBox Name="lbBuilding" HorizontalContentAlignment="Stretch" Height="400" Width="600" Margin="0,0,0,0"&gt;  &lt;ListBox.ItemTemplate&gt...
  • WPF动态更新ListBox

    2021-02-06 11:09:39
    ListBox的用法及实时更新 动态的向Listbox中添加子元素,例如通过文件选择导入图片,并向ListBox中添加按钮 前台PageMes.xaml文件中添加一个ListBox。 内容如下: <Page ... Title="PageMes"> <Grid> ...
  • WPF listbox内嵌radiobutton

    2020-11-25 11:13:26
    1.xaml中添加Windows.Resource <...Style x:Key="radioButtonStyle" TargetType="{x:Type ListBox}"> <Setter Property="ItemContainerStyle"> <Setter.Value> <Style Ta
  • WPF ListBox简单滑动动画引用 Behaviors 库ListBox 使用动画 引用 Behaviors 库 首先,我们要引用Behaviors的库才能使用行为来添加动画(已经引用过的可以忽略这一步): 点击菜单栏 工具 > NuGet 包管理器 > ...
  • 试试这个:StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">5Name="Border"Padding="2"BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=...
  • listBox和listView实现不同的效果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,576
精华内容 3,030
关键字:

listboxwpf