首页 > 其他分享 >WPF ListBox 控件绑定 Binding

WPF ListBox 控件绑定 Binding

时间:2023-08-18 13:11:22浏览次数:48  
标签:Info 控件 Img MyWpfApp component Binding jpg new WPF

 

当我们需要用到循环的列表内容,并且模板化程度高的时候,建议使用 ListBox 来做绑定。

XAML:

<Window.DataContext>
    <local:VMTempTest/>
</Window.DataContext>
<StackPanel Margin="10,0,0,50" Orientation="Vertical" >
    <TextBlock Text="ListBox 模板" FontWeight="Bold"  Margin="0,5,0,5" ></TextBlock>
    <DockPanel >
        <StackPanel HorizontalAlignment="Left" DockPanel.Dock="Top" >
            <ListBox x:Name="lb" ItemsSource="{Binding ListBoxData}" BorderThickness="0" >
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}"/>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>

                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <Image Source="{Binding Img}" Width="96" Height="96"/>
                            <TextBlock HorizontalAlignment="Center" FontSize="16" Text="{Binding Info}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>

        <StackPanel DockPanel.Dock="Bottom" DataContext="{Binding SelectedItem,ElementName=lb}" Margin="15 30 0 0" HorizontalAlignment="Left" Orientation="Vertical" >
            <TextBlock Text="{Binding Info,StringFormat='选中:\{0\}'}" ></TextBlock>
        </StackPanel>
    </DockPanel>
</StackPanel>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

ViewModel

public class VMTempTest : ViewModelBase
{
    public VMTempTest()
    {
        ListBoxData = new ObservableCollection<dynamic>(){
          new { Img="/MyWpfApp;component/Images/1.jpg",Info="樱桃" },
          new { Img="/MyWpfApp;component/Images/2.jpg",Info="葡萄" },
          new { Img="/MyWpfApp;component/Images/3.jpg",Info="苹果" },
          new { Img="/MyWpfApp;component/Images/4.jpg",Info="猕猴桃" },
          new { Img="/MyWpfApp;component/Images/5.jpg",Info="柠檬" },
       };
    }

    private IEnumerable listBoxData;
    /// <summary>
    /// LisBox数据模板
    /// </summary>
    public IEnumerable ListBoxData
    {
        get { return listBoxData; }
        set { listBoxData = value; RaisePropertyChanged(() => ListBoxData); }
    }
}
 

标签:Info,控件,Img,MyWpfApp,component,Binding,jpg,new,WPF
From: https://www.cnblogs.com/webenh/p/17640215.html

相关文章

  • WebView2在WPF中的应用
    开发环境运行环境:.Net6开发环境:VisualStudio202217.1.3框架语言:WPF安装WebView2通过PackageManager控制台安装Install-PackageMicrosoft.Web.WebView2通过Nuget包管理器安装在窗体中添加名字空间:xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;asse......
  • 为WPF框架Prism注册Nlog日志服务
    这篇文章介绍了为WPF框架Prism注册Nlog日志服务的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 无论是Nlog还是Serilog,它们都提供了如何快速在各类应用程序当中的快速使用方法。尽管,你现在无论是在WPF或者ASP.NETCore当中,......
  • WPF的5种绑定模式(Mode)
    一:WPF的5种绑定模式(Mode)WPF的绑定模式(mode)是枚举的枚举值共有5个1:OneWay(源变就更新目标属性)2:TwoWay(源变就更新目标并且目标变就更新源)3:OneTime(只根据源来设置目标,以后都不会变)4:OneWayToSource(与OneWay相反)5:Default(可以单向或双向,是靠被值定的源或目标是否有get或set来指定的)所......
  • WPF 设置第二次打开程序直接弹出第一次打开的程序
    激活已经打开窗口函数[DllImport("user32.dll")]privatestaticexternboolSetForegroundWindow(IntPtrhWnd);[DllImport("user32.dll")]privatestaticexternboolShowWindowAsync(IntPtrhWnd,intnCmdShow);[DllImport("user32.dll")]privatest......
  • c# - 如何在圆角 WPF 窗体中创建圆角矩形?
    我正在WPF中创建一个应用程序,我想要圆角。收到。现在窗体是无边框的,我正在尝试创建一个圆角矩形并将其放在顶部,使其看起来像Windows应用程序的顶部栏。我做不到。这是我的代码:<BorderCornerRadius="50,0,50,0"BorderBrush="Black"BorderThickness="2"Background="......
  • WPF利用依赖属性和命令编写自定义控件
    以实例讲解(大部分讲解在代码中)1,新建一个WPF项目,添加一个用户控件之后在用户控件里面添加几个控件用作测试,12345678910111213141516171819<UserControlx:Class="SelfControlDenpendy.SelfControl"             xmlns="http://schem......
  • WPF使用WPFMediaKit/AForge调用摄像头示例 .net core 8.0 也支持
    调用摄像头使我们经常会用到的一个功能,可以根据摄像头捕捉到的图像进行分析处理来做很多的东西,比如电子档案、图像识别、AI分析等等。本示例中主要介绍Nuget最常用的两个调用摄像头的轮子WPFMediaKit、AForge环境:VS2019,.NetFramework472WPF  (.netcore8.0 也支持)WPFMe......
  • C# wpf 使用GDI+实现截屏
    wpf截屏系列第一章使用GDI+实现截屏(本章)第二章使用DockPanel制作截屏框第三章实现截屏框实时截屏第四章使用ffmpeg命令行实现录屏文章目录wpf截屏系列前言一、引用System.Drawing方法一、引用系统程序集方法二、NuGet获取跨平台Drawing二、实现截屏1.简单截屏2.绘制鼠标3.转......
  • C# wpf 实现截屏框实时截屏功能
    wpf截屏系列第一章使用GDI+实现截屏第二章使用DockPanel制作截屏框第三章实现截屏框实时截屏(本章)第四章使用ffmpeg命令行实现录屏文章目录wpf截屏系列前言一、实现步骤1、获取截屏区域2、隐藏控件(1)问题(2)解决方法3、截屏二、完整代码三、效果预览总结前言在《C#wpf使用DockP......
  • 如何让WPF中的ValidationRule实现参数绑定
    背景应用开发过程中,常常会对用户输入内容进行验证,通常是基于类型、范围、格式或者特定的要求进行验证,以确保输入符合预期。例如邮箱输入框校验输入内容是否符合邮箱格式。在WPF中,数据模型允许将ValidationRules与Binding对象关联,可以通过继承ValidationRule类并重写Validate方法......