Skip to content

Instantly share code, notes, and snippets.

View rkusa's full-sized avatar
💭
Busy with non-Github stuff. Very slow to respond.

Markus Ast rkusa

💭
Busy with non-Github stuff. Very slow to respond.
View GitHub Profile
public static class GeoPositionWatcherExtensions
{
public static IObservable<IEvent<GeoPositionStatusChangedEventArgs>> GetStatusChangedEventObservable<T>(this IGeoPositionWatcher<T> watcher)
{
return Observable.FromEvent<GeoPositionStatusChangedEventArgs>(ev => watcher.StatusChanged += ev, ev => watcher.StatusChanged -= ev);
}
public static IObservable<IEvent<GeoPositionChangedEventArgs<T>>> GetPositionChangedEventObservable<T>(this IGeoPositionWatcher<T> watcher)
{
return Observable.FromEvent<GeoPositionChangedEventArgs<T>>(ev => watcher.PositionChanged += ev, ev => watcher.PositionChanged -= ev);
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
var statusChanged = from sc in watcher.GetStatusChangedEventObservable()
select sc.EventArgs;
statusChanged.Subscribe(item => Deployment.Current.Dispatcher.BeginInvoke(() => {
// update your status textblock
TextBlock.Text = Enum.GetName(typeof(GeoPositionStatus), item.Status);
if (item.Status == GeoPositionStatus.Ready)
{
// f.e. hide your loading bar
var statusChangedToReady = from sc in statusChanged
where sc.Status == GeoPositionStatus.Ready
select sc;
var positionChanged = from _ in statusChangedToReady
from pc in watcher.GetPositionChangedEventObservable()
where !pc.EventArgs.Position.Location.IsUnknown
select pc.EventArgs.Position;
positionChanged.Skip(1).Zip(positionChanged, (lhs, rhs) => new
{
Position1 = rhs,
Position2 = lhs,
Distance = lhs.Location.GetDistanceTo(rhs.Location)
}).Subscribe(item => Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// handle position ... f.e. add to a map's location collection
}));
public interface IDependencyResolver
{
object GetService(Type serviceType);
IEnumerable<object> GetServices(Type serviceType);
}
public class NinjectDependencyResolver : IDependencyResolver
{
private IKernel _kernel;
public NinjectDependencyResolver(IKernel kernel)
{
_kernel = kernel;
}
public object GetService(Type serviceType)
protected void Application_Start()
{
IKernel kernel = new StandardKernel(new YourNinjectModule());
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
// register global filters, routes, ...
}
yourListBox.Opacity = 0;
for (int i = 0; i < yourListBox.Items.Count; i++)
{
ListBoxItem item = (ListBoxItem)yourListBox.ItemContainerGenerator.ContainerFromIndex(i);
if (item != null)
{
VisualStateManager.GoToState(item, "BeforeLoaded", false);
}
}
yourListBox.Opacity = 1.0;