Subscribe: SilverlightTips.com - Basic
http://www.silverlighttips.com/category/feed/Basic.aspx
Preview: SilverlightTips.com - Basic

SilverlightTips.com - Basic



Keeping it simple and useful



 



Set Margin and Canvas programmatically

Mon, 11 Jan 2010 18:36:00 +0000

To set the margin or Canvas of an object from the code you can use SetValue() which is a built-in method. SetValue() takes a DependencyProperty such as a Button, and a double value.

Example:

myButton.SetValue(Canvas.LeftProperty, myPoint.X);

In above example ‘myButton’ is a Button on the xaml, and myPoint is a variable of type Point which we use the X value of.




Play sound in Silverlight using MediaElement

Thu, 10 Dec 2009 13:16:00 +0000

If you want to play music or a short sound clip in Silverlight here is what you need to do:

1. Your sound file
First, make sure you sound file is MP3 or WMA format as other formats are not supported.

Save your file to ClientBin folder (where your xap file gets coppied when buiding the project)

If you dont want to store your file to the ClientBin folder do this: from Visual Studio right click on the sound file and select Properties. Now in Properties window change Build Action to Resource. This ensures the file gets copied to the ClientBin folder during execution.

2. Add a MediaElement in your Xaml file


<MediaElement x:Name="SoundClip" Source="boing.mp3" Volume="1" AutoPlay="False">MediaElement>

set the Source to be the name of your file and AutoPlay to False so it can be played at click of a button.

Also add a button to play the sound when clicked:


<Button x:Name="PlaySound" Content="Play Sound" />

3. play the sound
in your code behind add this to the Click event of your button:

SoundClip.Play();

If you have any questions please visit Silverlight Forums here: http://silverlightforums.com/showthread.php?p=2080#post2080




Silverlight QueryString using TryParse() method

Wed, 30 Sep 2009 22:30:00 +0000

In order to get the value of your QueryString parameters from the URL all you need is this line of code:

int id = HtmlPage.Document.QueryString["ID"];

And you need to add Windows.Browser namespace for HtmlPage class:

using System.Windows.Browser;

However, there are always two situations which could break your application:

  1. if there are no “ID” parameters in the url
  2. if there is an “ID” parameter in the url, but it has a string value instead of an integer number.

To avoid breaking the code and causing runtime error we need to add a few conditions and also parse the value to integer instead of assigning it right away. We can use Int32.TryParse() method to test the value which we are about to assign to an integer variable before we actually do so, this way we will only assign it if it really is an integer:

int id = -1;
if (HtmlPage.Document.QueryString.ContainsKey("ID"))
{
    string queryStringValue = HtmlPage.Document.QueryString["ID"];
    if (Int32.TryParse(queryStringValue, out id))
    {
        // the result was successful and
        // the correct ID will be inserted to id
    }
    else
    {
        // the result was not successful                   
    }
}

Using above method, you ensure the id gets assigned a value only if the ID parameter in the url has a valid integer value, or it will remain as -1 if the value was not an integer.




Basic Silverlight Deep Linking

Sun, 06 Sep 2009 12:48:00 +0000

DeepLinking is one of the greatest features of Silverlight 3 in my opinion and this post will show you how to add Deep Linking to your Silverlight application in four simple steps: 1. Add Frame control in MainPage.xamlAdd System.Windows.Controls.Navigation in your project References and then a reference to navigation namespace to enable you adding the Frame control.         2. Add URI Routing using UriMapper                                                3. Add your pages to the applicationHere I have added a Homepage.xaml and About.xaml and added different content and color to them. 4. Add navigation links to your MainPage.xamlSince we have Homepage and About page, I am going to add to HyperlinkButtons on my MainPage.xaml in order to enable me browse to my two different pages. Please note, the Homepage and About pages will appear inside your             Add the code behind MainPage.xaml.cs public MainPage(){    InitializeComponent();    this.Loaded += new RoutedEventHandler(MainPage_Loaded);}private void MainPage_Loaded(object sender, RoutedEventArgs e){    HomeLink.Click += new RoutedEventHandler(HomeLink_Click);    AboutLink.Click += new RoutedEventHandler(AboutLink_Click);}private void AboutLink_Click(object sender, RoutedEventArgs e){    MainFrame.Navigate(new Uri("About", UriKind.Relative));}private void HomeLink_Click(object sender, RoutedEventArgs e){    MainFrame.Navigate(new Uri("", UriKind.Relative));} When you click on the About link, you will navigate away from the current[...]



Create a Tooltip window with smart positioning

Tue, 01 Sep 2009 19:06:00 +0000

As well as demonstrating how to create a simple Tooltip control for your application, this post will also show you how to get/set the absolute position of a control in your application even if it is not a Canvas control. The idea of tooltip is really to display some information such as images or text, when you hover the mouse on a control, and hide when you hover out. To this, all we need to do is to change the Visibility of our control which contains that information to visible/collapse when the mouse if hovered/left. I am going to put my information in a separate xaml file called Tooltip.xaml.                I will then add a reference to the tooltip in my MainPage.xaml file with Visibility set to Collapsed.                            Now from my code behind (MainPage.xaml.cs) I can easily control the Visibility of my tooltip control by using MouseEnter and MouseLeave events. private void MainPage_Loaded(object sender, RoutedEventArgs e){    tb_Tooltip.MouseEnter += new MouseEventHandler(tb_tooltip_MouseEnter);    tb_Tooltip.MouseLeave += new MouseEventHandler(tb_Tooltip_MouseLeave);    tb_Tooltip2.MouseEnter += new MouseEventHandler(tb_tooltip_MouseEnter);    tb_Tooltip2.MouseLeave += new MouseEventHandler(tb_Tooltip_MouseLeave);}private void tb_Tooltip_MouseLeave(object sender, MouseEventArgs e){    TooltipWindow.Visibility = Visibility.Collapsed;}private void tb_tooltip_MouseEnter(object sender, MouseEventArgs e){    TooltipWindow.Visibility = Visibility.Visible;} As you can see from the screen shot above, the tooltip appears at the top left corner of the application if you hover your mouse on any of the "Hover me" text. So what I am going to do, is to capture the position of the "Hover me" text which the mouse is hovering, and make some calculations to workout where to display my tooltip window, and finally reposition my tooltip control before I set its visibility to Visible: private void tb_tooltip_MouseEnter(object sender, MouseEventArgs e){    TextBlock tb = sender as TextBlock;    GeneralTransform transform = tb.TransformToVisual(LayoutRoot);    Point position = transform.Transform(new Point(0, 0));    double senderHeight = tb.ActualHeight;    double senderWidth = tb.ActualWidth;  &[...]



Adding 'mailto' link

Mon, 24 Aug 2009 16:44:00 +0000

(image) How to programmatically add a 'mailto' link in silverlight:

Add the below line to your .xaml.cs file to open mailto (email link) when an event gets fired (i.e. HyperlinkButton is clicked or etc):

HtmlPage.Window.Navigate(new Uri("mailto:tips@silverlighttips.com"));

if HtmlPage is not recognised in your Visual Studio, it is because you are missing an assemblly reference, so simply add this reference to the very top of your page:

using System.Windows.Browser;