每次单击按钮后更改元素的可见性
本文关键字:元素 可见性 单击 按钮 | 更新日期: 2023-09-27 18:04:41
我有一组XAML元素,如下:
<ComboBox x:Name="comB1" HorizontalAlignment="Left" Margin="244,90,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<ComboBox x:Name="comB2" HorizontalAlignment="Left" Margin="244,180,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<ComboBox x:Name="comB3" HorizontalAlignment="Left" Margin="244,270,0,0" VerticalAlignment="Top" Width="130" Height="48" Visibility="Collapsed">
<Button Content="+" HorizontalAlignment="Left" Margin="171,224,0,0" VerticalAlignment="Top" Height="51" Width="59" Click="Button_Click"/>
每次点击+
按钮后,我想将一个ComboBox
的Visibility
更改为visible
。
此解决方案适用于任何ComboBoxes
计数。试试这个:
int num = 1;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (num <= ComboCounts)//ComboCounts is count of your ComboBoxes
{
((ComboBox)this.FindName("comB" + num)).Visibility = Visibility.Visible;
num++;
}
}
int ComboNO = 0;
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
ComboNO++;
for (int i = 0; i < ComboCount; i++)
if (ComboNO == i)
foreach (FrameworkElement item in RootElement.Children)
if (item.Name == "comB" + i) item.Visibility = Visibility.Visible;
}
这里有一个技巧:
——在类
的作用域中声明一个变量int numOfVisibleCbx = 0;
—on按钮点击
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2)
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx++;
如果您想隐藏其他CBX,则
这里有一个技巧:
——在类
的作用域中声明一个变量int numOfVisibleCbx = 0;
——功能
void hideAll()
{
comB1.Visibility = Visibility.Hidden;
comB2.Visibility = Visibility.Hidden;
comB3.Visibility = Visibility.Hidden;
}
—on按钮点击
hideAll();
if(numOfVisibleCbx == 0)
comB1.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 1)
comB2.Visibility = Visibility.Visible;
else if(numOfVisibleCbx == 2){
comB3.Visibility = Visibility.Visible;
numOfVisibleCbx = 0;
}
numOfVisibleCbx++;
试一试:
public MainWindow()
{
InitializeComponent();
_comBs =
this
.Root
.Children
.OfType<ComboBox>()
.Where(x => x.Name.StartsWith("comB"))
.OrderBy(x => int.Parse(x.Name.Substring("comB".Length)))
.ToArray();
}
private ComboBox[] _comBs = null;
private int _comB_index = -1;
private void Button_Click(object sender, RoutedEventArgs e)
{
_comB_index++;
for (var i = 0; i < _comBs.Length; i++)
{
_comBs[i].Visibility = i == _comB_index % _comBs.Length
? Visibility.Visible
: Visibility.Collapsed;
}
}
您必须将this.Root
替换为您的容器元素。
我已经测试了这个解决方案,它是有效的。