亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#?WPF?ListBox?動(dòng)態(tài)顯示圖片功能

 更新時(shí)間:2023年08月19日 09:00:28   作者:Creator丶小鑫  
這篇文章主要介紹了C#?WPF?ListBox?動(dòng)態(tài)顯示圖片,處理過程分為前臺(tái)代碼和后臺(tái)代碼,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

前言

        最近在和其他軟件聯(lián)合做一個(gè)本地圖片選擇傳輸功能,為此希望圖片能夠有序的呈現(xiàn)在客戶端,簡單的實(shí)現(xiàn)了一下功能,通過Mvvm模式進(jìn)行呈現(xiàn),過程簡單通俗,話不多說直接上圖。

處理過程  

前臺(tái)代碼

你只需要粘貼到你的前臺(tái)xml中就可以,位置記得調(diào)整下Margin,我這是按照我的位置進(jìn)行調(diào)整的,所以針對ListBox在你的前臺(tái)你還需要調(diào)整下。

<ListBox Name="lstFileManager" Background ="Transparent" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" Margin="69,192,50,40">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <!--這里修改內(nèi)容整體大小以及在你框內(nèi)的占比,我這一行顯示5個(gè)-->
            <Grid Margin="17" Width="100" Height="155">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" ></RowDefinition>
                    <RowDefinition Height="Auto" ></RowDefinition>
                    <RowDefinition Height="Auto" ></RowDefinition>
                </Grid.RowDefinitions>
                <Image Source="{Binding Pic}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100"/>
                <Border BorderThickness="1" BorderBrush="red" Margin="1,107,1,0"/>
                <TextBlock Text="{Binding Name}" Grid.Row="1" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" Height="Auto" TextWrapping="Wrap"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

后臺(tái)代碼

創(chuàng)建一個(gè)類進(jìn)行數(shù)據(jù)綁定

 public class LVData
    {
        public string Name { get; set; }
        public BitmapImage Pic { get; set; }
    }

定義一個(gè)集合進(jìn)行數(shù)據(jù)緩存 (集合定義在MainWindow的類中)

ObservableCollection<LVData> LVDatas = new ObservableCollection<LVData>();

在我們的邏輯中進(jìn)行數(shù)據(jù)填充和呈現(xiàn),清除集合清空ListBox中的Item顯示

//添加圖
LVDatas.Add(new LVData { Name = "圖片在ListBox中顯示的名稱(建議直接顯示圖片名稱)", Pic = new BitmapImage(new Uri("完整的圖片路徑")) });
//顯示在ListBox中
lstFileManager.ItemsSource = LVDatas;
//清除集合清空呈現(xiàn)
LVDatas.Clear();
//當(dāng)前點(diǎn)擊的圖片名稱(lstFileManager.SelectedIndex  這是目前點(diǎn)擊的下標(biāo))
Console.WriteLine(LVDatas[lstFileManager.SelectedIndex].Name);

整體代碼

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ImageTexture
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        //定義集合
        ObservableCollection<LVData> LVDatas = new ObservableCollection<LVData>();
        public MainWindow()
        {
            InitializeComponent();
            ImageTexture2DView("E:\\ProjectFiles\\ImageTexture");
        }
        private void ImageTexture2DView(string path)
        {
            //Path是圖片所在的文件夾路徑
            var apps = System.IO.Directory.GetFiles(path);
            List<string> images = new List<string>();
            foreach (string app in apps)//---遍歷文件夾所有文件
            {
                var fi = new FileInfo(app);//---使用FileInfo類進(jìn)行操作
                if (fi.Extension == ".png")
                {
                    //將圖片添加到LVData中
                    LVDatas.Add(new LVData { Name = fi.Name.Remove(fi.Name.LastIndexOf(".")), Pic = new BitmapImage(new Uri(fi.FullName)) });
                }
            }
            //進(jìn)行呈現(xiàn)
            lstFileManager.ItemsSource = LVDatas;
        }
        private void ImageClear_Click(object sender, RoutedEventArgs e)
        {
            //清除集合清空ListBox中的Item顯示
            LVDatas.Clear();
        }
    }
    public class LVData
    {
        public string Name { get; set; }
        public BitmapImage Pic { get; set; }
    }
}

結(jié)局    

后續(xù)想從數(shù)據(jù)庫或者其他地方添加就根據(jù)自己的想法添加就可以了,另外獲取點(diǎn)擊的是哪個(gè)綁定個(gè)監(jiān)聽事件就可以了,希望對大家有幫助。

到此這篇關(guān)于C# WPF ListBox 動(dòng)態(tài)顯示圖片的文章就介紹到這了,更多相關(guān)C# WPF ListBox 顯示圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity3D網(wǎng)格功能生成球體網(wǎng)格模型

    Unity3D網(wǎng)格功能生成球體網(wǎng)格模型

    這篇文章主要為大家詳細(xì)介紹了Unity3D網(wǎng)格功能生成球體網(wǎng)格模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(Quene)實(shí)例詳解

    C#數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(Quene)實(shí)例詳解

    這篇文章主要介紹了C#數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(Quene),結(jié)合實(shí)例形式較為詳細(xì)的講述了隊(duì)列的功能、原理與C#實(shí)現(xiàn)隊(duì)列的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • .NET連接MongoDB數(shù)據(jù)庫實(shí)例教程

    .NET連接MongoDB數(shù)據(jù)庫實(shí)例教程

    這則小竅門將講述如何開發(fā)一個(gè).NET應(yīng)用來連接Mongo數(shù)據(jù)庫并執(zhí)行多種操作。同時(shí)還稍微涉及了Mongo數(shù)據(jù)庫和多種命令
    2013-11-11
  • C#控件picturebox實(shí)現(xiàn)圖像拖拽和縮放

    C#控件picturebox實(shí)現(xiàn)圖像拖拽和縮放

    這篇文章主要為大家詳細(xì)介紹了C#控件picturebox實(shí)現(xiàn)圖像拖拽和縮放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • C# List介紹及具體用法

    C# List介紹及具體用法

    這篇文章主要介紹了C# List介紹及具體用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#給多線程傳參的幾種方式小結(jié)

    C#給多線程傳參的幾種方式小結(jié)

    本文詳細(xì)探討了如何在C#中進(jìn)行線程傳參,包括啟動(dòng)線程時(shí)如何將參數(shù)傳遞給線程函數(shù),以及在多線程環(huán)境下正確使用參數(shù)的方法,對于理解和實(shí)踐C#線程編程具有重要意義,需要的朋友可以參考下
    2024-10-10
  • C#無損轉(zhuǎn)換Image為Icon的方法

    C#無損轉(zhuǎn)換Image為Icon的方法

    這篇文章主要為大家詳細(xì)介紹了C#無損轉(zhuǎn)換Image為Icon的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • c#中文轉(zhuǎn)unicode字符示例分享

    c#中文轉(zhuǎn)unicode字符示例分享

    本文介紹了中文轉(zhuǎn)unicode字符的方法,還有UNICODE字符轉(zhuǎn)為中文的方法,大家參考使用吧
    2014-01-01
  • c# Winform同一數(shù)據(jù)源多個(gè)控件保持同步

    c# Winform同一數(shù)據(jù)源多個(gè)控件保持同步

    通過對控件屬性設(shè)置數(shù)據(jù)源綁定,利用Windows數(shù)據(jù)更改通知這一特性,只要訂閱(設(shè)定綁定)的控件都能接收到數(shù)據(jù)的變化通知。 通過DataBindings方法實(shí)現(xiàn)雙向數(shù)據(jù)綁定
    2021-06-06
  • 怎么利用c#修改services的Startup type

    怎么利用c#修改services的Startup type

    C#必須以管理員的權(quán)限運(yùn)行才能達(dá)到效果的,不然service的startmode修改是沒有效果的
    2013-08-08

最新評(píng)論