如何在Windows手机中更改列表框内的图像,当用户选择列表框中的项目时我想更改该特定项目的图像我正在使用以下代码
<ListBox x:Name="list_contacts" SelectionMode="Multiple" ItemsSource="{Binding}" SelectionChanged="list_contacts_SelectionChanged" Foreground="White" Height="540" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0" Margin="0, 20, 0, 0">
<TextBlock x:Name="ContactResults" Text="{Binding DisplayName, Mode=OneWay}" FontSize="22" FontFamily="Vardana" Margin="10, 0, 0, 0" />
</StackPanel>
<StackPanel>
<TextBlock x:Name="ContactRe" Text="{Binding PhoneNumbers[0], Mode=OneWay}" FontSize="22" FontFamily="Vardana" Margin="10, 50, 0, 0" />
</StackPanel>
<StackPanel Margin="400,30,0,0" Grid.Column="1">
<Image Grid.Column="1" x:Name="img_network_status" Source="/Assets/Images/gray.circle.png" Width="40" Height="40" Stretch="Fill"/>
</StackPanel>
<StackPanel>
<Border BorderThickness="0" HorizontalAlignment="Left" Background="Transparent" VerticalAlignment="Center" BorderBrush="Black" >
<Image Visibility="Visible" Source="/Assets/Images/line.png" Height="45" Width="500" Stretch="Fill" Margin="0,40,0,0" />
</Border>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:0)
使用ObservableCollection类存储图像列表会更容易。
然后,您可以在SelectionChanged事件处理程序中添加代码,以更改所选项目的图像。
答案 1 :(得分:0)
您可以将图像路径绑定到ViewModel中的值,并在用户选择图像后交换路径值:
<Image Grid.Column="1" x:Name="img_network_status" Source="{Binding YourPathToTheImageInYourViewModel}" Width="40" Height="40" Stretch="Fill"/>
另一种选择是在ViewModel中拥有一个IsSelected
属性,该属性反映该项目当前已被选中。您必须手动设置/取消设置!然后可以在任何Converter中使用此属性来显示不同的图像,更改字体颜色,更改可见性等等。转换器通常被低估为仅仅形成文本,但也可用于将布尔值转换为任何其他属性(例如Visibility)