在Silveright视图中,我有一个ListBox
,其中的每个ListBoxItem
都包含一个超级链接。默认情况下,点击ListBoxItem
上的任意位置会将该项突出显示为已选中。我想要做的是覆盖默认选择行为,并使每个ListBoxItem
内的超链接充当其父级的选择'句柄',以便仅在超链接时选择ListBoxItem
单击,同时单击ListBoxItem
上的任何其他位置无效。这是可能的,如果是这样,我怎么能实现它?
ItemTemplate
的{{1}}:
ListBox
要将其置于某些上下文中,<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="LightGray" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".65*"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="1" Margin="5,0,0,0"
HorizontalAlignment="Left" VerticalAlignment="Center"
Text="{Binding UploadDate,
Converter={StaticResource DateDescriptionConverter}}"/>
<TextBlock Grid.Column="1" Grid.Row="0" Margin="5,0,0,0"
Text="{Binding HistoryStatus}"
HorizontalAlignment="Left" VerticalAlignment="Center"/>
<HyperlinkButton x:Name="DisplayDocument"
CommandParameter="{Binding}"
Grid.Column="2" Grid.Row="1" Content="View"
HorizontalContentAlignment="Left"
VerticalAlignment="Center" Margin="4">
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger EventName="Click">
<Interactions:CallMethodAction
TargetObject="{Binding Path=DataContext,
ElementName=DocumentViewPanel}"
MethodName="ViewDocumentButtonClick"/>
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
</HyperlinkButton>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
的内容是文档列表,单击“超链接”会将文档加载到单独的窗格中。使用默认选择行为,通过单击ListBox
中项目的背景,该项目可以显示为已选中,而不会实际加载相应的文档。
提前感谢您的任何答案。
答案 0 :(得分:1)
我建议您从可用的基本控件范围中选择另一个control
:我认为ItemsControl
非常合适。
为什么呢?
ListBox
用于显示项目列表,无论何时单击项目的任何位置,都将选中该项目。这就是它的目的。
显然你不想要那个 - 我甚至不确定你是否想要&#34;选择&#34;一点都不。
据我了解:你想要一个可视的项目清单;每个提供至少一个您可以为该项目调用的操作,并且您希望可视化指示您已对项目执行了相关操作。
让我们尝试使用ItemsControl
:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
....
<Border
Background="Blue"
x:Name="DocumentDisplayed_Indicator"
Opacity="0"/>
<HyperlinkButton ...>
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger EventName="Click">
<Interactions:CallMethodAction
TargetObject="{Binding Path=DataContext,
ElementName=DocumentViewPanel}"
MethodName="ViewDocumentButtonClick"/>
<SetPropertyAction
TargetName="DocumentDisplayed_Indicator"
Property="Opacity" Value="1"/>
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
</HyperlinkButton>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>