列表项选择—如何在列表框中选中的项上显示标记图像
本文关键字:列表 显示 图像 选择 | 更新日期: 2023-09-27 18:09:09
我有一个列表框,我必须在选中的项目上显示一个勾号。我试过这个代码
列表框
<ListBox Height="691" HorizontalAlignment="Left" Name="listBox1" Margin="-12,71,0,0" VerticalAlignment="Top" Width="480" SelectionChanged="listBox1_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="0,1,0,0" BorderBrush="#FFC1BCBC" Width="490">
<Grid Height="70">
<TextBlock
Name="clients"
Margin="10,12,0,0"
Text="{Binding Name}" FontSize="24" FontWeight="SemiBold" Foreground="Black"></TextBlock>
<Image Height="30" Width="30"
HorizontalAlignment="Left"
Name="imageTick"
Stretch="Fill"
VerticalAlignment="Center"
Source="{Binding strAccountSelectedTickPath}"
Margin="380,0,0,0" Visibility="Collapsed"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
xaml.cs
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string clientId="";
if (listBox_1.SelectedIndex >= 0)
{
(Application.Current as App).obj_subnodes = newlist[listBox1.SelectedIndex];
if ((Application.Current as App).obj_subnodes.strAccountSelectedTickPath==""||(Application.Current as App).obj_subnodes.strAccountSelectedTickPath==null)
{
if ( (Application.Current as App).obj_subnodes.strAccountSelectedTickPath = "")
{
(Application.Current as App).obj_subnodes.strAccountSelectedTickPath = "/sprinklr;component/Images/IsSelected.png";}
else{ (Application.Current as App).obj_subnodes.strAccountSelectedTickPath = ""; }
initializeListBox();
}
NavigationService.Navigate(new Uri("/Home.xaml, UriKind.Relative));
}
}
private void initializeListBox()
{
listBox1.ItemsSource = "";
listBox1.ItemsSource = newlist;
}
,但问题是假设如果我有两个项目在列表框中说item1和item2,第一次我选择item1和item1上显示的勾号标记,之后我选择了item2和item2上显示的勾号标记,但item1上的勾号标记没有消失。我必须显示一个tick标记来指示所选项目,也就是说,我想tick图像显示在我点击的项目上。有什么解决办法吗?是否有任何选项可以获得列表框内的tick图像的控制访问权限。如果有选项,我可以使用imagetick.visibility=visibility.collapse。但我找不到这样的选择。有什么解决办法吗?请帮助我
实现这一点的最佳方法是更改ListBoxItem
的样式/模板,以便当它处于'selected'状态时,显示一个tick图像。
您需要创建一个Style
,将Template
设置为ListBoxItem
,并在每个项目中添加您的tick映像。有关如何做到这一点的详细信息,请参阅下面的博客文章。您可以通过设置ItemContainerStyle
.
ListBox
。要根据选择打开/关闭标记,您需要将VisualState
添加到ListBoxItem
模板中,这在这篇博客文章中有描述。
下载最新的Silverlight Toolkit for Windows Phone(或通过NuGet安装)并使用MultiselectList
而不是常规的ListBox
。MultiselectList支持为匹配邮件客户端的功能而设计的复选框。