User Profile & Activity

Jimmy Petrus Administrator
Page
of 18

For result-filtered combobox functionality, I highly recommend you to look into the UXSearchBox control. You can bind the QueryText to the property in your ViewModel, perform the searching in server-side, and finally returns the data to be populated in the list.

For more information and walkthroughs on UXSearchBox, see UXSearchBox Overview.

Hope this helps,
Jimmy

Hi Andrzej,

Yes, it's necessary to use the NavigationContextExtended since we extend the default navigation behavior.

You can always use NavigationContextExtended in all scenarios, it should work 100% reliable, whether the page is navigated from a local application or an external application.

Hope this helps,
Jimmy

Posted: March 2, 2011 4:34 AM

Hi Andrzej,

As you pointed out, yes, it's possible to pass a parameter from dock button to the Window via the StartupParameters. The StartupParameters is defined in the WindowOptions instance that you pass along with the ApplicationURI.

Here's the code excerpt of the example that I took from our UXDesktopDock sample.

                <Intersoft:UXStackItem Text="Interestingness" Command="Intersoft:WindowCommands.LaunchApplication" CommandTarget="{Binding ElementName=SampleDesktop}">
<Intersoft:UXStackItem.CommandParameter>
<Intersoft:WindowOptions StartupParameters="Interestingness" ForceSingleInstance="True" ReactivateExistingInstance="True" Uri="/Intersoft.ClientUI.Samples.WindowControls;Intersoft.ClientUI.Samples.WindowControls.Views.UXDesktopDock.Photos"/>
</Intersoft:UXStackItem.CommandParameter>
</Intersoft:UXStackItem>

Of course, in your case, you can define the CommandParameter for your specific object such as UXDesktopDockButton, instead of UXStackItem.

If you need to pass a dynamic parameter, feel free to bind the StartupParameters to the object that contains the value you want to transfer. I.e., StartupParameters="{Binding ViewModel.DynamicValue}"

When you pass the WindowOptions that contains StartupParameters to the target application, and assuming the target is an IWindow, you can obtain the value of the parameters in the window.StartupParameters in the Load event of the window. With this technique, you can elegantly pass the parameters without intermediate/proxy code.

For an example, the following code obtains the parameter sent from the UXStackItem in the previous code example.

private void Photos_Loaded(object sender, RoutedEventArgs e)
{
FlickrPhotosViewModel model = new FlickrPhotosViewModel();
this.DataContext = model;

if (this.StartupParameters == null)
model.GetPhotosCommand.Execute("Interestingness");
else
model.GetPhotosCommand.Execute(this.StartupParameters.ToString());
}

Let me know if it works in your end, or if you have other questions.

Hope this helps,
Jimmy

Hi Michael,

You can use friendly URL to pass the query string seamlessly through the UriMapper. If query string is not desired, you can also pass data through the "extraData" parameter in the Navigate method. This way of passing data is also compatible with the WPF counterpart of the UXFrame.

For code sample, check out How-to: Navigate to a Page with Extra Data.

Hope this helps,
Jimmy

Posted: February 25, 2011 10:50 AM

Hi Andrzej,

The new hotfix is now available (build 4), which includes the fix to this issue.

In your code, use this.NavigationContextExtended.QueryString in order to access the parameter.

Hope this helps,
Jimmy

Posted: February 22, 2011 9:23 AM

Hi Andrzej,

The e.QueryString in the OnNavigatedTo method is populated correctly when navigated locally. However, it seems to populated too late when the page is navigated from external application (through ClientUI application framework). Consequently, this caused an error when your code attempted to access the e.QueryString dictionary in the method.

The fix for the issue will be available in this month's hotfix due to release in a couple days.

Thanks,
Jimmy

Hello,

This issue has been fixed, the hotfix will be released early next week.

Thanks,
Jimmy

Hi Chris,

Yes, it is possible. You can obtain the UXFrame element by inheritting the UXNavigationWindow class, and then access the "Navigator" property in OnApplyTemplate method which you need to override to configure more settings on the UXFrame.

However, be warned that INavigationContentLoader is Silverlight 4 specific API. It's not supported in SL3, WPF 4, nor WP7.

Do you have any specific scenarios that are unsupported in current ClientUI navigation framework?


Hi Chris,

You've got it right, thanks for sharing your solution. That is the technique to create custom item type in an items control.

In another common scenario related to style customization, you may want to use ItemContainerStyleSelector of the control when you need to customize the style of the same target item type based on specific conditions. This allows you to perform the style conditioning in a separate class without have to override the control's class. More information and example about ItemContainerStyleSelector can be found here.

Hope this helps,
Jimmy

Posted: February 16, 2011 11:47 PM

Hi Ross,

Using the event handler in MVVM application is not recommended. You can easily capture the selected tab in your VM through the SelectedIndex property of the UXTabControl. For instance, "SelectedIndex={Binding MyVM.SelectedTabIndex}"

In your case, the EventTrigger is treated as a content and thus a tab is created to encapsulate the content, which is no longer needed when you used the correct MVVM design pattern. The "content encapsulation" complies with the ItemsControl concept in which it allows you to host any UIElement in the control.

Please let me know if my suggestion works for you, or if you have specific reasons to use EventTrigger.

Hope this helps,
Jimmy

All times are GMT -5. The time now is 10:25 AM.
Previous Next