c# - 如何在 WPF 中动态添加多个内容到扩展器

标签 c# wpf expander

我有一个方法,可以从组合框的输入中在 wpf 中添加多个扩展器。选择组合框项后,将打开一个 OpenFileDialog,并获取文件名。这种情况发生了不止一次,我似乎正在覆盖扩展器的内容。代码如下

private void comboBox_SetFileNames(object sender, SelectionChangedEventArgs e)
{
    var selectedItem = combobox.SelectedItem as ComboBoxItem;
    if (selectedItem != null)
        string name = selectedItem.Name;
        Expander expander = new Expander {Header = name};

        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
        dlg.DefaultExt = ".txt";
        dlg.Filter = "Text File (*.txt) | *.txt";
        Nullable<bool> result = dlg.ShowDialog();

        if (result == true)
        {
            expander.Content = new TextBlock() { Text = System.IO.Path.GetFileName(dlg.FileName) };
        }

        dlg.Filter = "Excel Files (*.xlsx) | *.xlsx";
        Nullable<bool> result2 = dlg.ShowDialog();

        if (result2 == true)
        {
            expander.Content = new TextBlock() { Text = System.IO.Path.GetFileName(dlg.FileName) };
        }
        dock.Children.Add(expander);
    }
} 

有什么办法可以将这些文件名依次列在下面吗?所以像下面这样

ExpanderName
|
------FileName1.txt
|
------FileName2.xlsx

现在它被覆盖了,看起来像这样:

ExpanderName
|
------FileName2.xlsx

最佳答案

将您的 expander.Content 设置为像 StackPanel 这样的面板,然后将您的 TextBlocks 添加到其中。

Content 属性只能设置为单个值,而像 StackPanel 这样的面板可以包含多个控件。

类似这样的事情:

Expander expander = new Expander {Header = name};
StackPanel panel = new StackPanel();

var dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".txt";
dlg.Filter = "Text File (*.txt) | *.txt";
Nullable<bool> result = dlg.ShowDialog();

if (result == true)
    panel.Children.Add(new TextBlock() { Text = dlg.SafeFileName });

dlg.Filter = "Excel Files (*.xlsx) | *.xlsx";
Nullable<bool> result2 = dlg.ShowDialog();

if (result2 == true)
    panel.Children.Add(new TextBlock() { Text = dlg.SafeFileName });

expander.Content = panel;
dock.Children.Add(expander);

关于c# - 如何在 WPF 中动态添加多个内容到扩展器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28593549/

相关文章:

c# - 调用JSON web服务时如何获取异常信息

c# - 在 IIS 中部署时,复选框在 TreeView 控件的节点上不可见

c# - WPF:帮助 Scrollviewer MouseWheel 行为

c# - 使用 viewmodel 命令打开新选项卡

c# - xxxxx 是一个命名空间,但像类型一样使用

可以包含其他控件的 C# 用户控件(使用时)

c# - Crystal Reports - 值不能为空。参数名称 : window

wpf - 如何公开嵌套在 UserControl 中的控件的 DependencyProperty?

c# - 基本扩展器样式,覆盖标题颜色

javascript - jQuery展开/折叠动画 'jumping'超过一定高度