Html integration with Silverlight
<UserControl x:Class='SilverlightApplication3.MainPage'
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:d='http://schemas.microsoft.com/expression/blend/2008'
xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'
mc:Ignorable='d'
d:DesignWidth='640'
d:DesignHeight='480'>
<StackPanel x:Name="LayoutRoot" Background="White">
<Button Height="32" Width="150" HorizontalAlignment="Left" Content="Load Colors" Click="Button_Click"></Button>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Current Background: "></TextBlock>
<TextBlock x:Name="choiceTB"></TextBlock>
</StackPanel>
</StackPanel>
</UserControl>
//File: Page.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;
namespace SilverlightApplication3
{
[ScriptableType]
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
HtmlElement menu = HtmlPage.Document.GetElementById("colorMenu");
menu.AttachEvent("onchange", new EventHandler<HtmlEventArgs>(this.onColorChanged));
HtmlPage.Document.DocumentReady += new EventHandler(Document_DocumentReady);
HtmlElement option = HtmlPage.Document.CreateElement("option");
option.SetAttribute("value", "blue");
option.SetAttribute("innerHTML", "Blue");
menu.AppendChild(option);
HtmlElement option2 = HtmlPage.Document.CreateElement("option");
option2.SetAttribute("value", "white");
option2.SetAttribute("innerHTML", "White");
menu.AppendChild(option2);
HtmlElement option3 = HtmlPage.Document.CreateElement("option");
option3.SetAttribute("value", "red");
option3.SetAttribute("innerHTML", "Red");
menu.AppendChild(option3);
HtmlElement option4 = HtmlPage.Document.CreateElement("option");
option4.SetAttribute("value", "green");
option4.SetAttribute("innerHTML", "Green");
menu.AppendChild(option4);
}
public void onColorChanged(object sender, HtmlEventArgs e)
{
HtmlElement menu = (HtmlElement)e.Source;
string color = (string)menu.GetProperty("value");
Color c;
if (color == "blue")
c = Color.FromArgb(255, 0, 0, 255);
else if (color == "red")
c = Color.FromArgb(255, 255, 0, 0);
else if (color == "green")
c = Color.FromArgb(255, 0, 255, 0);
else
c = Color.FromArgb(255, 255, 255, 255);
choiceTB.Text = color;
LayoutRoot.Background = new SolidColorBrush(c);
}
void Document_DocumentReady(object sender, EventArgs e)
{
// code to manipulate DOM after HTML page is initialized
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
}
}
Related examples in the same category