C# 如何在wpf中设置动态创建的扩展器的子值

C# 如何在wpf中设置动态创建的扩展器的子值,c#,wpf,label,expander,C#,Wpf,Label,Expander,我有一个方法,它采用ComboBoxItem名称,并基于该ComboBoxItem的名称创建一个带有头的扩展器。如下所示 private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selectedItem = combobox.SelectedItem as ComboBoxItem; if (selectedItem != null) {

我有一个方法,它采用ComboBoxItem名称,并基于该ComboBoxItem的名称创建一个带有头的扩展器。如下所示

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selectedItem = combobox.SelectedItem as ComboBoxItem;
    if (selectedItem != null)
    {
        string name = selectedItem.Name;
        Expander expander = new Expander {Header = name};
    }
 }
private void ComboBox_SelectionChanged(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 = ".xlsm";
        dlg.Filter = "Excel Files (*.xlsx) | *.xlsx";
        Nullable<bool> result = dlg.ShowDialog();

        if (result == true)
        {
            //not sure what to do here, something like this maybe?
            //this.expander.?subvalue? = dlg.FileName;  
        }
    }
 }
然后我想打开一个文件对话框来选择文件,并将扩展器的子值设置为所选文件的名称。代码与文件对话框结合,上面的代码如下所示

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selectedItem = combobox.SelectedItem as ComboBoxItem;
    if (selectedItem != null)
    {
        string name = selectedItem.Name;
        Expander expander = new Expander {Header = name};
    }
 }
private void ComboBox_SelectionChanged(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 = ".xlsm";
        dlg.Filter = "Excel Files (*.xlsx) | *.xlsx";
        Nullable<bool> result = dlg.ShowDialog();

        if (result == true)
        {
            //not sure what to do here, something like this maybe?
            //this.expander.?subvalue? = dlg.FileName;  
        }
    }
 }
private void组合框\u SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
var selectedItem=combobox.selectedItem作为ComboBoxItem;
如果(selectedItem!=null)
{
字符串名称=selectedItem.name;
扩展器扩展器=新扩展器{Header=name};
Microsoft.Win32.OpenFileDialog dlg=新的Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt=“.xlsm”;
dlg.Filter=“Excel文件(*.xlsx)|*.xlsx”;
可为空的结果=dlg.ShowDialog();
如果(结果==真)
{
//不知道该怎么办,也许是这样?
//this.expander.?subvalue?=dlg.FileName;
}
}
}

我知道我可以使用任何东西作为子值,如标签或任何东西,但我不确定如何将其附加到新创建的扩展器。谢谢

我不确定我是否理解您在寻找什么,但是扩展器没有
子值
属性。您要查找的可能是
内容
属性

this.expander.Content = new TextBlock(){Text=dlg.FileName};

谢谢,你没弄错问题。这个答案很有道理。出于某种原因,我收到一个错误“'myProject.MainWindow'不包含'expander'的定义,也不包含扩展方法'expander'等…”是因为动态创建的扩展器不存在x:Name吗?如果是,我如何设置名称?我已经设置了标题,但不确定如何在这个场景中以语法方式添加x:Name。这是因为您需要在某个位置(例如在全局列表变量中)跟踪动态添加的支出者,并从那里访问它们。