Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <TreeView
- Grid.Row="0"
- Name="tvTopics"
- VerticalAlignment="Stretch"
- HorizontalAlignment="Stretch"
- MouseDoubleClick="tvTopics_MouseDoubleClick"
- ItemsSource="{Binding TierOneItems}"
- SelectedItemChanged="treeView1_SelectedItemChanged">
- <TreeView.ItemContainerStyle>
- <Style TargetType="{x:Type TreeViewItem}">
- <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
- <Setter Property="IsSelected" Value="{Binding Topic.IsSelected, Mode=TwoWay}" />
- <Setter Property="FontWeight" Value="Normal" />
- <Style.Triggers>
- <Trigger Property="IsSelected" Value="True">
- <Setter Property="FontWeight" Value="Bold" />
- </Trigger>
- <Trigger Property="IsExpanded" Value="True">
- <Setter Property="IsSelected" Value="True" />
- </Trigger>
- </Style.Triggers>
- </Style>
- </TreeView.ItemContainerStyle>
- <TreeView.ItemTemplate>
- <HierarchicalDataTemplate ItemsSource="{Binding Children}">
- <TextBlock Text="{Binding Name}" />
- </HierarchicalDataTemplate>
- </TreeView.ItemTemplate>
- </TreeView>
- private void tvTopics_MouseDoubleClick(object sender, MouseButtonEventArgs e)
- {
- TreeView tv = sender as TreeView;
- if (tv.SelectedItem is TopicTreeItemViewModel)
- {
- Model.SelectedTopic = ((TopicTreeItemViewModel)tv.SelectedItem).Topic;
- }
- }
- public class TopicTreeViewModel : NotificationObject, ITopicTreeViewModel
- {
- [ImportingConstructor]
- public TopicTreeViewModel(IGatewayService storyService, IEventAggregator eventAggregator)
- {
- this.storyService = storyService;
- this.eventAggregator = eventAggregator;
- this.AddTopicCommand = new DelegateCommand<object>(this.AddTopic);
- Helper.SubscriptionTokenList_LocationSearch.Add(this.eventAggregator.GetEvent<LocationSearchEvent>().Subscribe(OnLocationSearch, ThreadOption.UIThread));
- Helper.SubscriptionTokenList_SubjectSearch.Add(this.eventAggregator.GetEvent<SubjectSearchEvent>().Subscribe(OnSubjectSearch, ThreadOption.UIThread));
- }
- public void MouseDoubleClick(Topic topic)
- {
- if (topic != null && topic is Topic)
- {
- switch (this.searchType)
- {
- case SearchType.Location:
- this.eventAggregator.GetEvent<AddLocationEvent>().Publish((Topic)topic);
- break;
- case SearchType.Subject:
- this.eventAggregator.GetEvent<AddSubjectEvent>().Publish((Topic)topic);
- break;
- }
- }
- }
- public interface ITopicTreeViewModel
- {
- ReadOnlyCollection<TopicTreeItemViewModel> TierOneItems { get; }
- ICommand SearchCommand { get; }
- string SearchText { get; set; }
- Topic SelectedTopic { get; set; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement