Search code examples
javascriptc#.netwpfawesomium

Awesomium .NET. Wpf. TitleChanged event


I have a very basic application, that shows website content within the WPF app. Everything works fine, except TitleChangedEvent. Here is the code sample (XAML):

<Window xmlns:awe="http://schemas.awesomium.com/winfx"  x:Class="ShopChat.Desktop.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:webControls="clr-namespace:System.Web.UI.WebControls;assembly=System.Web"
    Title="{Binding ElementName=WebControl, Path=Title}" MinHeight="480" MinWidth="640">
<Grid>
  <awe:WebControl x:Name="WebControl"/>
</Grid>

And this is main window code-behind:

public MainWindow()
    {
        InitializeComponent();
        string url = @"http://shopchat.dev";
        try
        {
            url = ConfigurationManager.AppSettings.Get("Url");
        }
        catch (Exception)
        {
        }

        WebControl.Source = new Uri(url);
        WebControl.TitleChanged += WebControl_OnTitleChanged;
        this.WindowTitle = "Quickchat";
    }

    public string WindowTitle
    {
        get { return (string)GetValue(WindowTitleProperty); }
        set { SetValue(WindowTitleProperty, value); }
    }

    // Using a DependencyProperty as the backing store for WindowTitle.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty WindowTitleProperty =
        DependencyProperty.Register("WindowTitle", typeof(string), typeof(MainWindow), new PropertyMetadata(null));


    private void WebControl_OnTitleChanged(object sender, TitleChangedEventArgs e)
    {
        this.WindowTitle = e.Title;
    }

I've also tried to bind to window title directly using Binding ElementName=WebControl. That didn't help me either.

JavaScript client code is very simple: it changes the document title on timer (setInterval).

What am I doing wrong?


Solution

  • The issue was solved. TitleChanged event seemed to be insufficient. I've incorporated the usage of global js object to get the necessary behavior.