自定义空间:listbox_listitem

<Window x:Class="MyWpfApplication.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window2" Height="300" Width="500">
    <Window.Resources>
        <Style x:Key="SearchListBoxItemStyle"  TargetType="{x:Type ListBoxItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border  x:Name="myBorder"  Height="60" BorderBrush="#ddd9cd" BorderThickness="1 1 1 1" Padding="3">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition Width="50"/>
                                    <ColumnDefinition Width="20"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Path=FileName}" Height="30" HorizontalAlignment="Left"/>
                                <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=UploadStatus}" Height="30" HorizontalAlignment="Left"/>
                                <Image MouseLeftButtonDown="Image_MouseEnter" Grid.Row="0" Tag="{Binding}" Grid.Column="2" Source="Images/1.png" Height="16" Width="16" HorizontalAlignment="Right"/>
                                <ProgressBar Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Value="{Binding Path=UploadValue}" Height="10"/>
                            </Grid>
                        </Border>

                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="6*"></RowDefinition>
        </Grid.RowDefinitions>
        <Button Grid.Row="0" Content="删除文件" Name="but_del" Click="but_del_Click" ></Button>
        <Button Grid.Row="1" Content="选择文件" Name="selectFile" Click="selectFile_Click"></Button>

        <ListBox Grid.Row="2" x:Name="ListBox1" ScrollViewer.VerticalScrollBarVisibility="Visible" HorizontalAlignment="Stretch"
                 ItemContainerStyle="{DynamicResource SearchListBoxItemStyle}" ScrollViewer.HorizontalScrollBarVisibility="Auto" />

    </Grid>

</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Shapes;
using Microsoft.Win32;

namespace MyWpfApplication {
    /// <summary>
    /// Window2.xaml 的交互逻辑
    /// </summary>
    public partial class Window2 : Window {

        List<TempUploadFile> lst = new List<TempUploadFile>();
        public Window2() {
            InitializeComponent();
        }

        public class TempUploadFile
        {
            public string FileName { get; set; }
            public string UploadStatus { get; set; }
            public double UploadValue { get; set; }
        }

        private void but_del_Click(object sender, RoutedEventArgs e)
        {
            if (lst.Count>0)
            {
                lst.RemoveRange(0, lst.Count);
                this.ListBox1.ItemsSource = null;
                this.ListBox1.ItemsSource = lst;
            }

        }

        private void selectFile_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openfiledialog = new System.Windows.Forms.OpenFileDialog();
             openfiledialog.Multiselect = true;
            if (openfiledialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
                string[] filenames = openfiledialog.FileNames;
                foreach (string file in filenames)
                {
                    TempUploadFile a1 = new TempUploadFile
                    {
                        FileName = file,
                        UploadStatus = "正在上传",
                        UploadValue = 30d
                    };
                    lst.Add(a1);
                }
                this.ListBox1.ItemsSource = null;
                this.ListBox1.ItemsSource = lst;
            }
        }

        private void Image_MouseEnter(object sender, MouseButtonEventArgs e)
        {
            Image image = (Image)sender;

            lst.Remove((TempUploadFile)image.Tag); 

            this.ListBox1.ItemsSource = null;
            this.ListBox1.ItemsSource = lst;
        }

    }
}
时间: 2024-11-05 13:54:57

自定义空间:listbox_listitem的相关文章

自定义空间--瀑布流容器

效果就是添加图片, 图片会自动添加到最短的一列中.跟瀑布一样垂下来.  这里说一句   onMeasure  和onLayout 会执行两次,如果在方法中去数据不是太好,可以再onChangeSize(),此方法在onMeasure后执行,可以获得控件测量的宽和高(getMeasureWidth.getMeasureHeight)不能获取到(getWidth,getHeight  这两个方法需要在onLayout执行后才有效): <com.kallaite.rxjavademo.customco

jQuery命名空间,自定义空间及属性,插件开发全解析 (转)

原文链接:http://www.iteye.com/topic/545971 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法.下面就两种函数的开发做详细的说明. 1.类级别的插件开发 类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法.典型的例子就是$.AJAX()这个函

自定义圆的半径(主类)

package com.baidu.myviews; import com.baidu.myattrs.R; import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;im

Android 开发 -------- 自定义View 画 五子棋

自定义View  实现 五子棋 配图: 代码: package com.example.fiveson; import java.util.LinkedList; import java.util.List; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util

C语言内存空间的使用--数组

1,数组的定义 数组可以理解一块有控件的内存地址,和指针相识,但指针是可变,数组是一个常量符号,指定了那块地址. 1>定义一个空间: 1.大小 2.读取方式 int buf[100];//控件是0~99 2> 数组名是一个常量符号,而指针是个变量,一定不要放到=的左边     char buf[100];     buf = "hello world";   //将会报错 3>数组名[m]  m 的作用域是在申请的时候,当你后面使用的时候,m可大可小,编译器无法识别判

微信小程序开发之视频播放器 弹幕 弹幕颜色自定义

把录音的模块尝试过之后就想着微信小程序的视频播放会不会更有趣? 果然,微信小程序视频自带弹幕.是不是很爽,跟我一起来看看. 微信小程序开发之录音机 音频播放 动画 (真机可用) 先上gif: 再上几张图: 1.视频播放器 2.选择弹幕颜色 3.弹幕来了... 1.视频播放器 微信已经封装的非常好.我这里只用了很简单的几个属性 由于以前没做过弹幕,看到danmu-list就激动了.而且只需要将弹幕内容加入集合即可. 弹幕列表的元素: { text: '第 1s 出现的红色弹幕',//文本 colo

Android -- 自定义view实现keep欢迎页倒计时效果

1,最近打开keep的app的时候,发现它的欢迎页面的倒计时效果还不错,所以打算自己来写写,然后就有了这篇文章. 2,还是老规矩,先看一下我们今天实现的效果 相较于我们常见的倒计时,这次实现的效果是多了外面圆环的不断减少,这也是我们这次自定义view的有意思的一点. 知道了效果我们先来效果分析一波,首先是一个倒计时效果,计时的时候上面的圆弧不断的减少,里面的文字也不断的变化,在视觉上的改变就大致为这两部分,但是实际上我们的ui是由三部分来构成的:里面的实心圆.外面的圆弧.里面的文字.知道了我们u

android自定义View&amp;&amp;简单布局&amp;&amp;回调方法

一.内容描述 根据“慕课网”上的教程,实现一个自定义的View,且该View中使用自定义的属性,同时为该自定义的View定义点击事件的回调方法. 二.定义自定义的属性 在res/valus/ 文件夹下创建一个 attrs.xml 的属性定义文件,内容如下: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="HeadBar&qu

Confluence 6 教程:空间高手

这个教程将会带你如何在 Confluence 中创建和自定义空间,同时也包括如何删除空间,如果需要的话.通过这个教程,你将成为使用空间的高手. 你需要具有创建空间(Create space)和创建个人空间(Create personal space)的权限才能进行下面的操作.如果你是新设置好了的 Confluence ,你应该不会有权限方面的问题.如果你使用的是已经存在的 Confluence,但是你自己又不是管理员的话,请联系你的管理员,确定你具有正确的权限. 空间的小组 在这个教程中,你是你