我制作了一个充满按钮的3x3网格 我需要以某种方式将它们分组以使用Foreach 我该怎么做?
我搜索了互联网,但没有发现任何有用的信息 我还有一个永远不会改变的按钮,因此调用所有按钮进行更改并不是一个答案。
答案 0 :(得分:4)
你应该真正考虑实现MVVM模式,在大多数情况下你不需要引用任何按钮,因为它将成为你的ViewModel的一部分,你可以循环遍历你想要改变的集合。
但是,根据您的信息,您有类似这样的3x3,每个按钮都有?
<Grid x:Name="myGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="33*"/>
<ColumnDefinition Width="33*"/>
<ColumnDefinition Width="33*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="33*"/>
<RowDefinition Height="33*"/>
<RowDefinition Height="33*"/>
</Grid.RowDefinitions>
<Button Content="1" Grid.Row="0" Grid.Column="0" ></Button>
<Button Content="2" Grid.Row="0" Grid.Column="1" ></Button>
<Button Content="3" Grid.Row="0" Grid.Column="2" ></Button>
<Button Content="4" Grid.Row="1" Grid.Column="0" ></Button>
<Button Content="5" Grid.Row="1" Grid.Column="1" ></Button>
<Button Content="6" Grid.Row="1" Grid.Column="2" ></Button>
<Button Content="7" Grid.Row="2" Grid.Column="0" ></Button>
<Button Content="8" Grid.Row="2" Grid.Column="1" ></Button>
<Button Content="9" Grid.Row="2" Grid.Column="2" ></Button>
</Grid>
然后在后面的代码中通过网格的孩子非常简单foreach
foreach (Button b in this.myGrid.Children)
{
// do whatever you want with b
// b.Content = "I'm a button";
}
您也可以。标记特定标识符的每个按钮,甚至循环它们
foreach (Button b in this.myGrid.Children)
{
if(b.Tag == "main_buttons")
{
// do whatever you want with b when b.Tag is what you want
}
}
答案 1 :(得分:0)
您可以通过为每个按钮提供一个x:Name属性来轻松完成此操作,该属性将使其在代码隐藏中可用。在构造函数中,按名称将所有按钮收集到List中。然后,您可以在列表上标准foreach循环。
答案 2 :(得分:0)
您可以从可视树中找到按钮:
搜索WPF FindVisualChildren&#39;或看看这个主题:Find all controls in WPF Window by type