我是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;
}
答案 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;