我在不同页面上有2个列表框,其中包含一个按钮:
<ListBox x:Name="mainlist" >
<Button x:Name="but1" />
</ListBox>
和第二
<ListBox x:Name="secondlist" >
<Button x:Name="but2" Tag="but1" Click = "button_click" />
</ListBox>
关于应用程序初始化我将不透明度设置为1但为0:
public Main()
{
InitializeComponent();
but1.Opacity = 0;
}
我希望当我按下but2将不透明度设置为100而不是1:
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不透明度。那么问题是如何强制更新?
答案 0 :(得分:0)
我不知道你要用你的代码实现什么,但是如果我已经理解你了 - 你想以这种方式显示第一个按钮,那么你的代码工作正常。问题是你的按钮都没有Content
而另一个按钮没有。{1}。所以你让它可见,但在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
。
答案 1 :(得分:0)
更改按钮点击事件,如下所示。
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;
}
}
}