我想在每次点击listbox
按钮时清除addImages
,这会向其中添加新项目但我在清除时遇到问题。以下是我的代码:
private void addImages_Click(object sender, RoutedEventArgs e)
{
FileInfo Images;
string[] filenames = null;
System.Windows.Forms.FolderBrowserDialog folderDlg = new System.Windows.Forms.FolderBrowserDialog();
folderDlg.ShowNewFolderButton = true;
System.Windows.Forms.DialogResult result = folderDlg.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
filenames = System.IO.Directory.GetFiles(folderDlg.SelectedPath);
foreach (string image in filenames)
{
Images = new FileInfo(image);
if(Images.Extension.ToLower() == ".png" || Images.Extension.ToLower() == ".jpg" || Images.Extension.ToLower() == ".gif" || Images.Extension.ToLower() == ".jpeg" || Images.Extension.ToLower() == ".bmp" || Images.Extension.ToLower() == ".tif")
{
ImageList.Items.Add(new LoadImages(new BitmapImage(new Uri(image))));
}
}
}
}
我已经尝试了ImageList.items.clear()
,BindingOperations.ClearAllBindings(ImageList)
但是这些项目只有在下次点击按钮时才会首次删除项目,因为它们不会清除列表。我希望每次单击按钮时清除列表。
答案 0 :(得分:0)
ListBox.Items.Clear
应清除列表,如果您需要在每时间点击该按钮,那么您需要在事件处理程序中使用它,即
private void addImages_Click(object sender, RoutedEventArgs e)
{
listBox.Items.Clear();
// do stuff
}
答案 1 :(得分:0)
试试这个..
ImageList.Images.Clear();
listBox.Items.Clear();
答案 2 :(得分:0)
以下代码应该可以正常使用。唯一可能有问题的事情
private void addImages_Click(object sender, RoutedEventArgs e)
{
ImageList.Items.Clear();
RefreshList();
FileInfo Images;
string[] filenames = null;
System.Windows.Forms.FolderBrowserDialog folderDlg = new System.Windows.Forms.FolderBrowserDialog();
folderDlg.ShowNewFolderButton = true;
System.Windows.Forms.DialogResult result = folderDlg.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
filenames = System.IO.Directory.GetFiles(folderDlg.SelectedPath);
foreach (string image in filenames)
{
Images = new FileInfo(image);
if(new string[]{".png", ".jpg", ".gif", ".jpeg", ".bmp", ".tif"}.Contains(Images.Extension.ToLower()))
{
ImageList.Items.Add(new LoadImages(new BitmapImage(new Uri(image))));
}
}
}
RefreshList();
}
private void RefreshList()
{
// Force visual refresh of control
ImageList.Refresh();
}
*注意我清理了扩展验证
编辑:我刚刚注意到你在谈论Bindings。那么你的问题很容易。您无法清除绑定到控件的列表。控件将保留原始来源。您只能更新绑定源,否则需要手动更新绑定。
收藏就像攀登一样。
控制是人 绳索是DataSource(集合) 山是你的模范
如果在您的模型中清除(切割)源(所有绳索) 控制(人)仍持有源(绳索)
如果您希望控件(人)拥有新来源(绳索) 你需要添加一个新的,所以他可以跳过它去删除旧的。