我有一个列表框,此列表框包含图像控件。
我想在列表框项目的点击事件上运行时间图像路径。
如何更改图像控制路径?
我的代码是这样的:
<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图像控制路径。 帮帮我
答案 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,但可能会有效。