如何在wp7中更改运行时列表框图像路径

时间:2012-12-04 04:32:03

标签: image windows-phone-7 listbox

我有一个列表框,此列表框包含图像控件。

我想在列表框项目的点击事件上运行时间图像路径。

如何更改图像控制路径?

我的代码是这样的:

  <ListBox x:Name="TransactionList" Width="450" Height="450" Margin="0,0,0,0">    
    <ListBox.ItemTemplate >
      <DataTemplate>

            <StackPanel Orientation="Horizontal" Width="450" Height="auto" Margin="0,0,10,0" >
                <StackPanel Orientation="Horizontal"  Width="300" Height="auto" Margin="0,0,1,10">
                    <TextBlock Height="35" Width="250"  Margin="10,0,0,90" Text="{Binding SONGNAME}" FontSize="22" Foreground="Red" Name="tbSubCategories" />
                    <TextBlock Height="25" Margin="-250,10,180,30" Text="SingBy:" FontSize="18" Foreground="Gray" Name="tbsingby" />
                    <TextBlock Height="auto" TextWrapping="Wrap" Width="210" Margin="-180,50,0,70" Text="{Binding  SINGBY}" FontSize="18" Foreground="Gray" Name="tbSingBy" />
                     <TextBlock Height="25"  Margin="-280,60,200,0" Text="MusicBy:" FontSize="18" Foreground="Gray" Name="tbMusicby" />
                     <TextBlock Height="auto" TextWrapping="Wrap" Width="200" Margin="-205,100,0,30" Text="{Binding MUSICBY}" FontSize="18" Foreground="Gray" Name="tbMusicBy" />
                </StackPanel>
            <StackPanel Orientation="Vertical"  Height="auto" Width="auto" Margin="0,50,0,35">
              <Image Name="imgsubcatagorie" Width="40" Height="40"  VerticalAlignment="Center" FlowDirection="LeftToRight" Source="/VodafoneAugmentedReality;component/Images/play1.png" />
            </StackPanel>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox> 

当我点击列表框项目时,我想更改imgsubcatagories图像控制路径。 帮帮我

1 个答案:

答案 0 :(得分:0)

好吧,这不容易。

如果可以获取您的图像对象,可以像这样轻松完成:

imgsubcatagorie.Source = ModifyImageSource(new Uri("yourUri", UriKind.RelativeOrAbsolute));

 private ImageSource ModifyImageSource(Uri uri)
        {
                image = new BitmapImage(uri);
                return image;          
        }

但是,你不能只是拿这个对象。主要问题是如何获得它。

你应该以某种方式从TransactionList中提取它。 (另外,你有一个非常沉重的构造:listbox =&gt; stackpanel =&gt; stackpanel =&gt; image)

我的第一个想法是:使用循环遍历TransactionList中的所有项目并尝试在那里找到图像。


可能的解决方案

我对ListBox.ItemTemplate功能没有很好的解释,我没有你的整个代码,但无论如何......

直接方法:尝试使用循环来查找项目。

foreach (var x in TransactionList.Items)
            {
                if (x is Image)
                {
                    image = (Image)x;
                    break;
                }
            }

然后在事件处理程序中使用此图像对象。

另外

Find element of concrete type.

同时查看此问题:

Find control inside Listbox.ItemTemplate

不适用于wp7,但可能会有效。