这是在WPF的C#中:
我知道我可以像这样添加项目到堆栈面板:myStackPanel.Children.Add(new Button());
或者像这样的ListBox:myListBox.Items.Add(new Button());
当然,我可以事先编辑控件并在后面添加它们,比如首先设置属性然后添加它们。
但是,如果控件在堆栈布局中,并且后面有代码,我该怎么选择它。例如,有没有类似的方法:myStackPanel.Childern.CONTROL_AT_INDEX[n]
?然后,我如何编辑它更像是更改标签的内容(如果它是标签)或事件处理程序(如果它是按钮)?
我也想要一个ListBox的解决方案。 我只是不知道如何在内部访问这些控件。
答案 0 :(得分:4)
分配给该控件x:Name
并在后面的代码中使用它。
这对模板和样式中的控件自然无效。
答案 1 :(得分:1)
与Tigran已经发布的一样,可以在XAML中为控件指定一个属性:
<ListBox x:Name="myListBox"
// more properties here...
/>
然后您的代码隐藏将能够编译您的行:
myListBox.Items.Add(new Button());
但是,我强烈建议您另外使用 MVVM 方法来摆脱代码隐藏文件。这减少了业务逻辑与UI的耦合。使用MVVM模式是Microsoft推荐的使用WPF的方式,因为它使得使用许多WPF功能非常容易。
可以在此SO线程中找到一个很好的教程资源,例如:MVVM: Tutorial from start to finish?
答案 2 :(得分:1)
这是我的解决方案
var child = (from c in theCanvas.Children
where "someId".Equals(c.Tag)
select c).First();