如何刷新列表框中的按钮属性
本文关键字:按钮 属性 列表 何刷新 刷新 | 更新日期: 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;
}
}
}