我有一个列表框,我必须在所选项目上显示勾号。我试过这段代码
<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>
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;
}
但问题是假设ifi在列表框中有两个项目,例如item1和item2,并且在第一次我选择了item1和item1上显示的刻度线,之后我选择了item2,而item2上显示了tick marlk。但是item1上的刻度标记不会消失。我必须显示一个刻度标记以指示所选项目,即我希望刻度图像显示在我单击的项目上。是否有任何解决方案。是否有任何选项可以获得控制权访问列表框内的刻度图像。如果有一个选项,我可以使用imagetick.visibility = visibility.collapsed.but我没有找到这样的选项。有任何解决方案,请帮助我
答案 0 :(得分:1)
实现此目的的最佳方法是更改ListBoxItem
的样式/模板,以便当它处于“选定”状态时,会显示刻度图像。
您需要创建一个Style
,为Template
设置ListBoxItem
,在每个项目中添加刻度图像。有关如何执行此操作的详细信息,请参阅following blog post。您可以通过设置ListBox
。
ItemContainerStyle
要根据选择打开/关闭刻度线,您需要在VisualState
模板中添加ListBoxItem
,this blog post中对此进行了描述。
答案 1 :(得分:1)
下载最新的Silverlight Toolkit for Windows Phone(或通过NuGet安装)并使用MultiselectList
代替常规ListBox
。 MultiselectList支持旨在匹配邮件客户端功能的复选框。