隐藏WPF窗口中的所有按钮

时间:2016-02-26 07:01:16

标签: c# wpf

我是WPF的新手。我有一个带有多个按钮的窗口。我想隐藏窗口中的所有按钮,除了一个。按钮会动态添加到窗口中。

XAML代码:

<Grid>
<Button x:Name="btnA"/>
<Button x:Name="btnB" />
<Button x:Name="btnC"/>
<Button x:Name="btnD" />
<Button x:Name="btnE"/>
<Button x:Name="btnF" />
<Button x:Name="btnG"/>
<Button x:Name="btnH" />
    <StackPanel >
         <Button x:Name="btnHideAllButtons" click="btnHideAllButtons_Click"/>
    </StackPanel>
</Grid>

C#代码

 private void btnHideAllButtons_Click(object sender, RoutedEventArgs e)
        {
           //Code to Hide all Buttons

            btnHideAllButtons.Visibility = Visibility.Visible;
        }

4 个答案:

答案 0 :(得分:2)

将所有按钮放入列表中:

|- UIViewController
|-- UIScrollView
|------ UIImageView
|------ UIView
|---------- UILabel
|------ UIWebView

然后做一个foreach

public List<Button> allButtons; //(declared on your Window's cs)

//Initialize on your constructor
allButtons = new List<Button>() {btnA,btnB,/*and so on*/}

答案 1 :(得分:1)

我能想到的两种可能的解决方案:

1:将要隐藏的所有按钮放在堆叠面板或类似元素中并隐藏它。当然,这意味着要保持可见的那个必须保留在其余部分之外的元素中。

2:使用绑定,例如:

在你的代码/ ViewModel后面放了一个像这样的属性

public Visibility ButtonVisibility { get; set; }

并在clas构造函数中设置它,即:

ButtonVisibility = Visibility.Visible;

并且对于要隐藏的每个按钮,在xaml中设置绑定:

<Button ... Visibility="{Binding ButtonVisibility}">

然后将属性更改为隐藏,如下所示:

ButtonVisibility = Visibility.Collapsed;

答案 2 :(得分:0)

您可以通过以下方式找到所有gridMain网格子项的按钮:

的Xaml:

<Grid Name="gridMain">
    <Button x:Name="btnA"/>
    <Button x:Name="btnB" />
    <Button x:Name="btnC"/>
    <Button x:Name="btnD" />
    <Button x:Name="btnE"/>
    <Button x:Name="btnF" />
    <Button x:Name="btnG"/>
    <Button x:Name="btnH" />
    <StackPanel >
        <Button x:Name="btnHideAllButtons" Click="btnHideAllButtons_Click" Content="Hide"/>
    </StackPanel>
</Grid>

代码:

private void btnHideAllButtons_Click(object sender, RoutedEventArgs e) {
    gridMain.Children.OfType<Button>()
        .ToList()
        .ForEach(b => b.Visibility = Visibility.Collapsed);
}

答案 3 :(得分:0)

您可以从property-&gt; aspect-&gt;可见性设置按钮的可见性。 如果要使按钮可见,可以写:

Button.Visibility = Visibility.Visible;