如何刷新ListBox中的Button属性

时间:2014-06-02 19:51:31

标签: c# windows-phone-8 listbox

我在不同页面上有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不透明度。那么问题是如何强制更新?

2 个答案:

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