在WPF中对WebBrowser的Source属性进行数据绑定

有谁知道如何在WPF(3.5SP1)中对WebBrowser的.Source属性进行数据绑定?我有一个列表视图,我想在左侧有一个小的WebBrowser,在右侧是内容,并希望将每个WebBrowser的源与绑定到列表项的每个对象中的URI进行数据绑定。

到目前为止,这就是我作为概念证明所得到的,但是“ <WebBrowser Source="{Binding

Path=WebAddress}"”没有编译。

<DataTemplate x:Key="dealerLocatorLayout" DataType="DealerLocatorAddress">                

<StackPanel Orientation="Horizontal">

<!--Web Control Here-->

<WebBrowser Source="{Binding Path=WebAddress}"

ScrollViewer.HorizontalScrollBarVisibility="Disabled"

ScrollViewer.VerticalScrollBarVisibility="Disabled"

Width="300"

Height="200"

/>

<StackPanel Orientation="Vertical">

<StackPanel Orientation="Horizontal">

<Label Content="{Binding Path=CompanyName}" FontWeight="Bold" Foreground="Blue" />

<TextBox Text="{Binding Path=DisplayName}" FontWeight="Bold" />

</StackPanel>

<TextBox Text="{Binding Path=Street[0]}" />

<TextBox Text="{Binding Path=Street[1]}" />

<TextBox Text="{Binding Path=PhoneNumber}"/>

<TextBox Text="{Binding Path=FaxNumber}"/>

<TextBox Text="{Binding Path=Email}"/>

<TextBox Text="{Binding Path=WebAddress}"/>

</StackPanel>

</StackPanel>

</DataTemplate>

回答:

问题是那WebBrowser.Source不是一个DependencyProperty。一种解决方法是使用某种AttachedProperty魔术来启用此功能。

public static class WebBrowserUtility

{

public static readonly DependencyProperty BindableSourceProperty =

DependencyProperty.RegisterAttached("BindableSource", typeof(string), typeof(WebBrowserUtility), new UIPropertyMetadata(null, BindableSourcePropertyChanged));

public static string GetBindableSource(DependencyObject obj)

{

return (string) obj.GetValue(BindableSourceProperty);

}

public static void SetBindableSource(DependencyObject obj, string value)

{

obj.SetValue(BindableSourceProperty, value);

}

public static void BindableSourcePropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)

{

WebBrowser browser = o as WebBrowser;

if (browser != null)

{

string uri = e.NewValue as string;

browser.Source = !String.IsNullOrEmpty(uri) ? new Uri(uri) : null;

}

}

}

然后在您的xaml中执行以下操作:

<WebBrowser ns:WebBrowserUtility.BindableSource="{Binding WebAddress}"/>

以上是 在WPF中对WebBrowser的Source属性进行数据绑定 的全部内容, 来源链接: utcz.com/qa/409156.html

回到顶部