This is a quick guideline to get rid of reading long and boring documentation and give you very basic information about a screen.
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Threading;
using IntegratedHelpInWPF.AttachProperties;
using IntegratedHelpInWPF.Commands;
using IntegratedHelpInWPF.Languages;
using JerichoCOREService.View.Popup;
namespace IntegratedHelpInWPF
{
public class DynamicHelpViewModel: BaseViewModel
{
private readonly ICommand _linkCommand;
public ICommand LinkCommand
{
get { return _linkCommand; }
}
public DynamicHelpViewModel()
{
this.View = new DynamicHelpView();
View.ViewModel = this;
DynamicHelper.OnHelpMessagePublished += DynamicHelper_OnHelpMessagePublished;
DynamicHelper.OnHelpModeSelection += DynamicHelper_OnHelpModeSelection;
DynamicHelperViewer.OnHelpTextCollaped += DynamicHelperViewer_OnHelpTextCollaped;
DynamicHelperViewer.OnHelpTextShown += DynamicHelperViewer_OnHelpTextShown;
_linkCommand = new DelegateCommand(ExecuteCloseCommand);
}
void DynamicHelperViewer_OnHelpTextShown(object sender, HelpElementArgs e)
{
if (((IDynamicHelpView)this.View).ViewDispatcher != null)
{
((IDynamicHelpView)this.View).ViewDispatcher.BeginInvoke(new Action(() =>
{
e.Element.Effect = DynamicHelperViewer.HelpGlow;
Adorners.SetTemplate(e.Element, e.HelpData.Template );
Adorners.SetData(e.Element, e.HelpData.Data);
Adorners.SetIsVisible(e.Element, true);
}));
}
}
void DynamicHelperViewer_OnHelpTextCollaped(object sender, HelpElementArgs e)
{
if( ((IDynamicHelpView)this.View).ViewDispatcher != null)
{
((IDynamicHelpView)this.View).ViewDispatcher.BeginInvoke(new Action(() =>
{
e.Element.Effect = null;
Adorners.SetTemplate(e.Element, null);
Adorners.SetIsVisible(e.Element, false);
}));
}
}
public void ExecuteCloseCommand(object param)
{
if (null != HelpText && !string.IsNullOrEmpty(HelpText.URL))
{
System.Diagnostics.Process.Start(Utility.GetSystemDefaultBrowser(), HelpText.URL);
}
}
void DynamicHelper_OnHelpModeSelection(object sender, HelperModeEventArgs e)
{
// Start recursive toggle at visual root
DynamicHelperViewer.GenerateHelpControl(e.Current.Element, e);
if (null != e.Current.ScreenAdorner)
{
if (e.IsHelpActive)
{
//e.Current.Element.Effect = DynamicHelperViewer.HelpGlow;
AdornerLayer aLayer = AdornerLayer.GetAdornerLayer(e.Current.Element);
if (aLayer != null)
{
aLayer.Remove(e.Current.ScreenAdorner);
e.Current.ScreenAdorner.Child = new DetailsHelpView();
aLayer.Add(e.Current.ScreenAdorner);
}
}
else
{
//e.Current.Element.Effect = null;
AdornerLayer aLayer = AdornerLayer.GetAdornerLayer(e.Current.Element);
if (aLayer != null)
aLayer.Remove(e.Current.ScreenAdorner);
}
}
}
void DynamicHelper_OnHelpMessagePublished(object sender, HelperPublishEventArgs e)
{
if(e.Sender != null
&& this.View != null
&& this.View is DependencyObject
&& e.Sender.CheckParent(this.View as DependencyObject))
{
return;
}
HasHelpText = (!string.IsNullOrWhiteSpace(e.HelpMessage));
HelpText = DynamicHelpStringLoader.GetDynamicHelp(e.HelpMessage);
}
private DynamicHelpModel _helpText;
public DynamicHelpModel HelpText
{
get { return _helpText; }
set { _helpText = value; NotifyPropertyChanged(()=>HelpText); }
}
public bool HasHelpText
{
get { return _hasHelpText; }
set
{
_hasHelpText = value;
NotifyPropertyChanged(() => HasHelpText);
}
}
private bool _hasHelpText;
public override bool CleanUpResource()
{
DynamicHelper.OnHelpMessagePublished -= DynamicHelper_OnHelpMessagePublished;
DynamicHelper.OnHelpModeSelection -= DynamicHelper_OnHelpModeSelection;
DynamicHelperViewer.OnHelpTextCollaped -= DynamicHelperViewer_OnHelpTextCollaped;
DynamicHelperViewer.OnHelpTextShown -= DynamicHelperViewer_OnHelpTextShown;
return base.CleanUpResource();
}
}
public interface IDynamicHelpView : IBaseView
{
Dispatcher ViewDispatcher { get; }
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
In my childhood, my uncle has shown me how to see the cloud in a close look and I understand that one can draw some elements of the Earth in the sky-canvas if he/she wants to. After that the cloud becomes closer to me and It teaches me one thing that, a deeper-look to something will give you some clues to draw your imagination. You can able to see that one which you have build-up in your mind.
Years past, I have started my career as a software engineer and has been looking for passion in my coding and development which I should be to enjoy my profession and has started asking myself- 'am I doing any engineering here?!' Is my code becoming that thing which I have designed in my mind? So to find that answer I have tried that old solution here... I have decided to come closer to my code and start analyzing them. And it is really working for me and at least it gives me the confidence that I can build something that I really want to. I can draw my thinking there through my code and can build-up my vision that I have designed in my mind. It also helps me to think out of the box, solve each problems by making blocks and make me careful on each steps.
• Morshed's Technical Blog site: http://morshedanwar.wordpress.com/
• Morshed's Technical articles those are published in Codeproject site: http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2992452
• Morshed's Linkedin profile: http://www.linkedin.com/in/morshedanwar
• Morshed's Facebook Profile : http://www.facebook.com/morshed.pulok
Beside all these I like to do - photography and music. Here is my Flickr photos : http://www.flickr.com/photos/morshed_anwar/