QKit 0.4.1 Update

JumpListTheming

The past few updates for QKit has been about adding new and useful controls for that are essential to the Windows Phone UX. Today, I’m only pushing out a small update is mainly bug fixes but I still encourage updating to the latest one for the best experience. In this post, I’ll point out a couple notable fixes.

Previously, the JumpList picker items supported multiple themes such as Light, Dark, and high contrast but due to some limitations, those changes only took effect once the app restarted. This was not true for the rest of the JumpList control or the rest of any WPRT app. So, in this update, I’ve worked around the limitation and the JumpList controls should change its look according through any and all theme changes just like the native OS. Also, while I was in there, I noticed that the Light theme for the JumpList control wasn’t exactly right so I aligned the color so now it should be pretty difficult to tell it apart in any theme.

Also, I simplified the GenericJumpList picker items so it should perform a little better and animations should play a bit smoother. The main thing this fix accomplishes is that it will play the closing animation properly in WP8.1 Update 1. In Update 1, many animations no longer play if it’s too taxing. If you have a lot of groups in a GenericJumpList, the picker doesn’t play the closing animation and just disappears. With the simpler item containers, it now plays properly in most if not all cases.

Full change log:

-Changed EdgeSelectButton to derive from Button instead of ButtonBase.
-JumpList pickers now support theme changes during runtime. No need to restart app anymore.
-Improved Light theme colors to better match OS for JumpListPickers.
-Simplified GenericJumpList picker items for performance increases.
-Renamed incorrectly named JumpListItemBackgroundBrush to JumpListGroupHeaderBackgroundBrush and JumpListItemTextForegroundBrush to JumpListGroupHeaderTextForegroundBrush.

MultiSelectListView with Edge Action

MultiSelectListViewLead

Good news! The ListView control allows multiple selection with proper styling out of the box. The bad news? You can’t tap on the left edge of the item to activate it like you can in the email or messaging app. Also, if you haven’t noticed, the animation that shows the checkboxes are horrid. The great news? I’ve created a control to solve those issues (until Microsoft decides to release a toolkit that solves the same issue). Continue reading

InputAwarePanel Improvement + QKit Open Sourced

FormsPage

One of the limitations that my InputAwarePanel had was that even though it resized available space properly when the InputPane is shown, it didn’t actually keep the TextBox in view when that happened. Even though this sounds like a simple task, I quickly found out that it was quite the opposite. I’ll go over some of the issues I encountered, point out unresolved limitations, and show a small demo of it in action. Along with this little improvement, I’ve also made the source code available on CodePlex for anyone to check out and improve so please check it out and report any bugs you may find.

Continue reading

InputAwarePanel for Chat and Messaging Apps

InputAwarePanel

Pretty much everyone who’ve tried to create some sort of text input page in a Windows Phone app has probably encountered the sometimes annoying way occluded TextBoxes are handled. Whenever a TextBox in focus on a device without a hardware keyboard, a software InputPane is shown so the user can input text. However, if the InputPane covers up the TextBox, the OS slides the whole page up so the TextBox is visible. The problem with this is anything at the top of the page is now unreachable because it has been slid out of view. Luckily, I’ve written a control that mimics more closely to the native OS’ way of handling occluding InputPanes and it’s now available in my toolkit QKit.

Continue reading

Fixing Pivot Control Layout Issues

PivotOpticalMarginFix

One of my first posts outlined the many discrepancies between the shipped project and page templates and the WP8.1 OS. While those most of the issues have been addressed, we now need to dig deeper and look at issues on the control level. The control that I will be tackling today will be the WinRT Pivot control. Even though there are many small issues that plague this control, they are almost all fixable by simple XAML retemplating.

Continue reading

Ready to Use List Controls for WP8.1 WinRT

ReadyToUseListControls

I’m excited to announce that I will be making available a class library I’ve been developing and using personally in my work. I will be maintaining this library and adding new controls and components as I deem them stable enough for others to use. For the first release, there will only be three controls geared towards lists presentation but I think it will be helpful to a lot of WP WinRT devs out there nonetheless.

Continue reading

Making WP8.1 JumpLists Better (Updated)

MakingJumpListBetter

Update: Want to get the JumpList experience the easy way? Check out my new controls and download them from nuget.

In a previous post, I outlined how to create a fully functioning JumpList in a WinRT WP app. I provided a helper class to do the heavy lifting of grouping and sorting as well as all of the styles and templates needed to get the correct UX so it can be consistent with the OS. While it works and looks great, it’s far from perfect. The JumpList doesn’t properly support globalization, it is unreadable when high contrast mode is enabled on the device, the performance is quite slow, and it doesn’t automatically support landscape orientation.

The good news is that I’ve fixed the high contrast theming and globalization issues. I’ve also managed improve the performance of the JumpList quite a bit. It’s not perfect and it still needs some work but I think it’s a good enough work around to release. The bad news is I still have no elegant solution for orientation changes without writing some code behind or an attached behavior. So let’s focus on the good news and get to fixing on what we can.

Continue reading