如何刷新列表框中的按钮属性

本文关键字:按钮 属性 列表 何刷新 刷新 | 更新日期: 2023-09-27 18:06:12

我在不同的页面上有两个列表框和一个按钮,像这样:

<ListBox x:Name="mainlist" >
      <Button x:Name="but1" />
</ListBox>

和第二个

<ListBox x:Name="secondlist" >
    <Button x:Name="but2" Tag="but1" Click = "button_click" />
</ListBox>

在应用程序初始化时,我将不透明度设置为0:

 public Main()
 {
       InitializeComponent();
       but1.Opacity = 0;
 }

我希望当我按下but2时将but1的不透明度设置为100:

private void button_click(object sender, RoutedEventArgs e)
{
    var name = (sender as Button).Tag.ToString();
    object item = mainlist.FindName(name);
    if (item is Button)
    {
        (item as Button).Opacity = 100;
    }
}

但是这不会更新but1的不透明度。所以问题是如何强制更新?

如何刷新列表框中的按钮属性

我不知道你是试图实现你的代码,但如果我已经理解你正确-你想使第一个按钮可见这种方式,那么你的代码是正常工作的。问题是你的两个按钮都没有Content,一个在另一个上面。所以你让它可见,但是在but2下。尝试像这样修改XAML并运行您的过程:

<StackPanel>
    <ListBox x:Name="mainlist" >
        <Button x:Name="but1" Content="First"/>
    </ListBox>
    <ListBox x:Name="secondlist" >
        <Button x:Name="but2" Tag="but1" Click="button_click" Content="Second"/>
    </ListBox>
</StackPanel>

另一方面,Opacity的值从0到1,所以你可以用1代替100

按如下方式更改按钮点击事件。

private void button_click(object sender, RoutedEventArgs e)
{
    var name = (sender as Button).Tag.ToString();
    foreach (var item in mainlist.Items)
    {
        //if you know the button by name do this
        if(item is Button && ((Button)item).Name == "but1")
        {
            (item as Button).Opacity = 1d;
        }
        //set all the buttons opacity with 1 if tag is "some value" do this
        if(item is Button && ((Button)item).Tag== "Mark")
        {
            (item as Button).Opacity = 1d;
        }
        //set if you want to set all buttons opacity in the list do this
        if(item is Button)
        {
            (item as Button).Opacity = 1d;
        }
    }
}