WPF 如何对按钮进行分组?

Szy*_*mon 1 c# wpf grid xaml

我制作了一个充满按钮的 3x3 网格。
我需要以某种方式将它们分组才能对它们使用 Foreach。
我怎样才能做到这一点?

我在互联网上搜索但没有找到任何有用的东西。
我还有一个永远不应该改变的按钮,所以调用所有按钮来改变并不是一个答案。

Chu*_*are 5

您应该真正考虑实现 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>
Run Code Online (Sandbox Code Playgroud)

然后在后面的代码中foreach通过遍历 Grid 的子元素非常简单

foreach (Button b in this.myGrid.Children)
{
    // do whatever you want with b
    // b.Content = "I'm a button";
}
Run Code Online (Sandbox Code Playgroud)

您还可以为每个按钮添加特定标识符,甚至循环它们

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
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述