3

我的 XAML 的摘录:

<ListBox x:Name="list" Margin="0,0,0,0" ItemsSource="{Binding Items}">
     <ListBox.ItemTemplate>
         <DataTemplate>
           <StackPanel Orientation="Horizontal" Background="LightGray" Margin="0,5,0,0" >
                <Image Name="like" Source="/Images/Like1.png"  Tap="like_Tap"/>
                <Image Name="unlike" Visibility="Collapsed"  Source="/Images/UNLike1.png" Tap="unlike_Tap"/>
                <Image Name="comment" Source="/Images/Comment1.png" Margin="30,0,0,0"/>
          </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>  

现在这是我的问题

在我的 C# 代码中:

private void like_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{     
  // Here I'm unable to change the visibility of either image. How do I do this?
}

我也希望这种行为传播到不同的按钮。

我该怎么做呢?谢谢!

4

2 回答 2

1

我建议以不同的方式进行操作,将其用作多功能按钮。

您的 XAML 将是这样的:

       <StackPanel Orientation="Horizontal" Background="LightGray" Margin="0,5,0,0" >
            <Image Name="Likebtn" Source="/Images/Like1.png"  Tap="Likebtn_Tap"/>
            <Image Name="commentbtn" Source="/Images/Comment1.png" Margin="30,0,0,0"/>
      </StackPanel>

您的方法将是这样的:

private void Likebtn_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Image img = sender as Image;
    if (img == null) return;
    switch (img.Source.ToString())
    {
       case "The like button's location":
           //change do your like logic, and then change it to an unlike button
           break;
       //the opposite for the unlike button's location
    }
}
于 2013-07-19T12:54:18.853 回答
1

我建议不要在代码中访问图像,而是使用它binding来实现这一点。

在您的类中创建 bool 类型的Item属性并将该属性与Visibility图像属性绑定。您需要Visibility To Boolean Converter

 <Image Visibility="{Binding Path=ShowLikeImage Converter={Static Resource VisibilityToBooleanConverter}}"  Source="/Images/UNLike1.png" Tap="unlike_Tap"/>

在点击事件中,您只需要更改ShowLikeImage属性,UI 就会自动更新。

于 2013-07-19T13:01:08.520 回答