如何分组按钮WPF?

时间:2014-11-29 23:10:08

标签: c# wpf xaml grid

我制作了一个充满按钮的3x3网格 我需要以某种方式将它们分组以使用Foreach 我该怎么做?

我搜索了互联网,但没有发现任何有用的信息 我还有一个永远不会改变的按钮,因此调用所有按钮进行更改并不是一个答案。

3 个答案:

答案 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
    }
}

enter image description here

答案 1 :(得分:0)

您可以通过为每个按钮提供一个x:Name属性来轻松完成此操作,该属性将使其在代码隐藏中可用。在构造函数中,按名称将所有按钮收集到List中。然后,您可以在列表上标准foreach循环。

答案 2 :(得分:0)

您可以从可视树中找到按钮:

搜索WPF FindVisualChildren&#39;或看看这个主题:Find all controls in WPF Window by type