private void ProjectContextMenu_Opened(object sender, RoutedEventArgs e) { ContextMenu projectContextMenu = (ContextMenu)sender; MenuItem webMenuItem = projectContextMenu.Items.Cast <MenuItem>().Last(); webMenuItem.Items.Clear(); ObservableProject selectedProject = (ObservableProject)projectsDataGrid.SelectedItem; if (projectsDataGrid.SelectedItems.Count != 1 || selectedProject.RpcProject.GuiUrls.Count == 0) { webMenuItem.Visibility = Visibility.Collapsed; return; } foreach (BoincRpc.GuiUrl guiUrl in selectedProject.RpcProject.GuiUrls) { MenuItem urlMenuItem = new MenuItem { Header = guiUrl.Name, ToolTip = guiUrl.Description, Tag = guiUrl.Url }; urlMenuItem.Click += delegate(object s, RoutedEventArgs a) { Process.Start((string)((MenuItem)s).Tag); }; webMenuItem.Items.Add(urlMenuItem); } webMenuItem.Visibility = Visibility.Visible; }
private void Window_Loaded(object sender, RoutedEventArgs e) { // Constructor is too early for setting these properties. // The live sorting/grouping/filtering feature is a very expensive one so be careful to activate it only if needed // and only the one you actually need. It may be a good idea too to de-activate it when it’s no more needed. computersDataGrid.Items.IsLiveFiltering = true; foreach (string propertie in ObservableHost.GetLiveFilteringProperties()) { computersDataGrid.Items.LiveFilteringProperties.Add(propertie); } projectsDataGrid.Items.IsLiveFiltering = true; foreach (string propertie in ObservableProject.GetLiveFilteringProperties()) { projectsDataGrid.Items.LiveFilteringProperties.Add(propertie); } tasksDataGrid.Items.IsLiveFiltering = true; foreach (string propertie in ObservableTask.GetLiveFilteringProperties()) { tasksDataGrid.Items.LiveFilteringProperties.Add(propertie); } transfersDataGrid.Items.IsLiveFiltering = true; foreach (string propertie in ObservableTransfer.GetLiveFilteringProperties()) { transfersDataGrid.Items.LiveFilteringProperties.Add(propertie); } }
public ProjectDetailViewModel(ObservableProject project, INavigation navigation) { Title = project.Name; Project = project; _navigation = navigation; RemoveProjectCommand = new RelayCommand(async() => await ExecuteRemoveProjectCommand(), CanExecuteRemoveProjectCommand); }
private async Task UpdateProjects(HostState hostState) { await hostState.BoincState.UpdateProjects(); if (!_useObservableCollections) { return; } foreach (var rpcProject in hostState.BoincState.Projects) { ObservableProject project = Projects.FirstOrDefault(pvm => pvm.HostId == hostState.Id && pvm.Name == rpcProject.ProjectName); if (project == null) { project = new ObservableProject(hostState, rpcProject); if (string.IsNullOrEmpty(SearchString)) { Projects.Add(project); } else { foreach (var content in project.GetContentsForFiltering()) { if (content != null && content.IndexOf(SearchString, StringComparison.InvariantCultureIgnoreCase) != -1) { // The search string is found in any of the VM's property Projects.Add(project); break; } } } } else { project.Update(rpcProject); } } }