Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从堆栈面板中的代码隐藏控件进行访问?_C#_Wpf_Listbox_Controls - Fatal编程技术网

C# 如何从堆栈面板中的代码隐藏控件进行访问?

C# 如何从堆栈面板中的代码隐藏控件进行访问?,c#,wpf,listbox,controls,C#,Wpf,Listbox,Controls,这是WPF中的C语言: 我知道我可以像这样向堆栈面板添加项目:myStackPanel.Children.Addnew按钮; 或类似这样的列表框:myListBox.Items.Addnew按钮; 当然,我可以事先编辑控件,然后再添加它们,比如先设置属性,然后再添加它们 但是,当控件位于堆栈布局中且代码隐藏时,如何选择它呢。例如,是否有类似的方法:myStackPanel.Childern.CONTROL_AT_INDEX[n]?然后,我如何编辑它,更像是更改标签的内容(如果是标签)或事件处理程

这是WPF中的C语言:

我知道我可以像这样向堆栈面板添加项目:myStackPanel.Children.Addnew按钮; 或类似这样的列表框:myListBox.Items.Addnew按钮; 当然,我可以事先编辑控件,然后再添加它们,比如先设置属性,然后再添加它们

但是,当控件位于堆栈布局中且代码隐藏时,如何选择它呢。例如,是否有类似的方法:myStackPanel.Childern.CONTROL_AT_INDEX[n]?然后,我如何编辑它,更像是更改标签的内容(如果是标签)或事件处理程序(如果是按钮)

此外,我想为列表框以及解决方案,请。 我只是不知道一旦这些控件进入内部,如何访问它们。

将x:Name分配给该控件,并在代码中使用它

这对于模板和样式中的控件自然无效。

将x:Name指定给该控件,并在代码中使用它


这对于模板和样式中存在的控件自然无效。

像已经发布的Tigran一样,可以在XAML中为控件指定属性:

<ListBox x:Name="myListBox"
         // more properties here...
/>
但是,我强烈建议您交替使用MVVM方法来消除代码隐藏文件。这减少了业务逻辑与UI的耦合。使用MVVM模式是Microsoft推荐的使用WPF的方法,因为它使使用许多WPF特性变得非常简单


在这个线程中可以找到一个很好的教程资源,例如:

像已经发布的Tigran一样,可以在XAML中为控件分配一个属性:

<ListBox x:Name="myListBox"
         // more properties here...
/>
但是,我强烈建议您交替使用MVVM方法来消除代码隐藏文件。这减少了业务逻辑与UI的耦合。使用MVVM模式是Microsoft推荐的使用WPF的方法,因为它使使用许多WPF特性变得非常简单

在这个SO线程中可以找到一个很好的教程资源,例如:

这是我的解决方案

var child = (from c in theCanvas.Children
         where "someId".Equals(c.Tag)
         select c).First();
这是我的解决办法

var child = (from c in theCanvas.Children
         where "someId".Equals(c.Tag)
         select c).First();

嗯,问题是,我要在运行时添加这些控件,这样我就不能向它们添加x:name了,可以吗?我需要一种不需要xaml partah帮助就可以访问这些控件的方法,如果您需要在运行时访问这些控件,只需保留您创建的对象,或者给它们命名并从父控件按名称获取它们。是的,但这太容易了,我想与这些控件进行更多的交互,使用名称实在太简单了:P难道没有办法从层次结构树中找到我想要的控件吗?你可以利用它。但同样,它并不总是适用于模板和样式。好吧,问题是,我要在运行时添加这些控件,这样我就不能向它们添加x:name了,对吗?我需要一种不需要xaml partah帮助就可以访问这些控件的方法,如果您需要在运行时访问这些控件,只需保留您创建的对象,或者给它们命名并从父控件按名称获取它们。是的,但这太容易了,我想与这些控件进行更多的交互,使用名称实在太简单了:P难道没有办法从层次结构树中找到我想要的控件吗?你可以利用它。但同样,它并不总是适用于模板和样式。