1

这是在 WPF 中的 C# 中:

我知道我可以像这样将项目添加到堆栈面板:myStackPanel.Children.Add(new Button()); 或者像这样添加到 ListBox:myListBox.Items.Add(new Button()); 当然,我可以事先编辑控件并稍后添加它们,例如先设置属性然后添加它们。

但是,一旦控件位于带有代码的堆栈布局中,我该如何选择它。例如,有没有类似的方法:myStackPanel.Childern.CONTROL_AT_INDEX[n]?然后我如何编辑它,如果它是一个标签,或者如果它是一个按钮,我该如何编辑它更像是更改标签的内容?

我也想要一个 ListBox 的解决方案。我只是不知道一旦它们在里面如何访问这些控件。

4

3 回答 3

4

分配给该控件x:Name并在您的代码中使用它。

这对于TemplatesStyles中存在的控件自然无效。

于 2012-07-04T11:26:27.387 回答
2

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

<ListBox x:Name="myListBox"
         // more properties here...
/>

然后您的代码隐藏将能够编译您的行:

myListBox.Items.Add(new Button());

但是,我强烈建议您交替使用MVVM方法来摆脱代码隐藏文件。这减少了您的业务逻辑与 UI 的耦合。使用 MVVM 模式是微软推荐的使用 WPF 的方式,因为它使得使用许多 WPF 功能变得非常容易。

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

于 2012-07-04T11:36:05.183 回答
1

这是我的解决方案

var child = (from c in theCanvas.Children
         where "someId".Equals(c.Tag)
         select c).First();
于 2012-07-04T11:52:21.050 回答