Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. <TreeView
  2. Grid.Row="0"
  3. Name="tvTopics"
  4. VerticalAlignment="Stretch"
  5. HorizontalAlignment="Stretch"
  6. MouseDoubleClick="tvTopics_MouseDoubleClick"
  7. ItemsSource="{Binding TierOneItems}"
  8. SelectedItemChanged="treeView1_SelectedItemChanged">
  9. <TreeView.ItemContainerStyle>
  10. <Style TargetType="{x:Type TreeViewItem}">
  11. <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
  12. <Setter Property="IsSelected" Value="{Binding Topic.IsSelected, Mode=TwoWay}" />
  13. <Setter Property="FontWeight" Value="Normal" />
  14. <Style.Triggers>
  15. <Trigger Property="IsSelected" Value="True">
  16. <Setter Property="FontWeight" Value="Bold" />
  17. </Trigger>
  18. <Trigger Property="IsExpanded" Value="True">
  19. <Setter Property="IsSelected" Value="True" />
  20. </Trigger>
  21. </Style.Triggers>
  22. </Style>
  23. </TreeView.ItemContainerStyle>
  24. <TreeView.ItemTemplate>
  25. <HierarchicalDataTemplate ItemsSource="{Binding Children}">
  26. <TextBlock Text="{Binding Name}" />
  27. </HierarchicalDataTemplate>
  28. </TreeView.ItemTemplate>
  29. </TreeView>
  30.  
  31. private void tvTopics_MouseDoubleClick(object sender, MouseButtonEventArgs e)
  32. {
  33.  
  34. TreeView tv = sender as TreeView;
  35.  
  36. if (tv.SelectedItem is TopicTreeItemViewModel)
  37. {
  38. Model.SelectedTopic = ((TopicTreeItemViewModel)tv.SelectedItem).Topic;
  39.  
  40. }
  41. }
  42.  
  43. public class TopicTreeViewModel : NotificationObject, ITopicTreeViewModel
  44. {
  45.  
  46. [ImportingConstructor]
  47. public TopicTreeViewModel(IGatewayService storyService, IEventAggregator eventAggregator)
  48. {
  49. this.storyService = storyService;
  50. this.eventAggregator = eventAggregator;
  51.  
  52. this.AddTopicCommand = new DelegateCommand<object>(this.AddTopic);
  53.  
  54. Helper.SubscriptionTokenList_LocationSearch.Add(this.eventAggregator.GetEvent<LocationSearchEvent>().Subscribe(OnLocationSearch, ThreadOption.UIThread));
  55. Helper.SubscriptionTokenList_SubjectSearch.Add(this.eventAggregator.GetEvent<SubjectSearchEvent>().Subscribe(OnSubjectSearch, ThreadOption.UIThread));
  56.  
  57. }
  58. public void MouseDoubleClick(Topic topic)
  59. {
  60. if (topic != null && topic is Topic)
  61. {
  62. switch (this.searchType)
  63. {
  64. case SearchType.Location:
  65. this.eventAggregator.GetEvent<AddLocationEvent>().Publish((Topic)topic);
  66. break;
  67. case SearchType.Subject:
  68. this.eventAggregator.GetEvent<AddSubjectEvent>().Publish((Topic)topic);
  69. break;
  70. }
  71. }
  72. }
  73.  
  74. public interface ITopicTreeViewModel
  75. {
  76. ReadOnlyCollection<TopicTreeItemViewModel> TierOneItems { get; }
  77.  
  78. ICommand SearchCommand { get; }
  79.  
  80. string SearchText { get; set; }
  81.  
  82. Topic SelectedTopic { get; set; }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement