我正在使用 MVVM。我在属性 InputTemplates 中有一个 xml 节点列表。当我从视图模型中选择列表的任何项目时,我希望列表自动向下滚动。我知道我必须在我的视图模型中使用一个属性“SelectedItem”,这会有所帮助。
<Border BorderBrush="{StaticResource BorderBrush}"
IsEnabled="{Binding Path=InputTemplateBorderEnabled}"
BorderThickness="2" CornerRadius="5" Canvas.Left="1" Canvas.Top="84" Height="240" Name="border7" Width="432" >
<HeaderedContentControl
Content="{Binding Path=InputTemplates,Mode=OneTime}"
Header="{Binding Path=INTemplateLabel}"
ContentTemplate="{StaticResource FileTabTemplate}"
Style="{StaticResource MainHCCStyle}" Width="420" Height="237" />
</Border>
<DataTemplate x:Key="FileTabTemplate">
<st:ScrollableTabControl Background="#FFF0F9F8"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource FileTabItemTemplate}"
Margin="1">
</st:ScrollableTabControl>
</DataTemplate>
<DataTemplate x:Key="FileTabItemTemplate" >
<DockPanel>
<TextBlock Name="textBlock" Text="{Binding Path=Keyword}" ToolTip="{Binding Path=FileName}" FontFamily="Microsoft Sans Serif" FontSize="10" TextWrapping="NoWrap"/>
</DockPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter TargetName="textBlock" Property="Foreground" Value="Indigo"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
ObservableCollection<CommonResource.ViewModel.FileTemplateViewModel> inputTemplates;
foreach (XMLTemplateViewModel xmlvm in inputTemplates)
{
list = xmlvm.XMlRootNodes[iSearchRootNode];
list.SelectedItem = MyList[iSelectionIndex];// MyList is a list of few items TreeViewWithIcons
}
在设置 list.SelectedItem 上,自动向下滚动后,所选项目应在屏幕中可见。我必须为此使用任何事件吗?还请提供属性“SelectedItem”的代码。