gpt4 book ai didi

c# - 数据绑定(bind) WPF 中 WebBrowser 的 Source 属性

转载 作者:IT王子 更新时间:2023-10-29 03:38:18 24 4
gpt4 key购买 nike

有谁知道如何在 WPF(3.5SP1)中对 WebBrowser 的 .Source 属性进行数据绑定(bind)?我有一个 ListView ,我希望左侧有一个小的 WebBrowser,右侧有内容,并且将每个 WebBrowser 的源数据绑定(bind)到绑定(bind)到列表项的每个对象中的 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}"/>

关于c# - 数据绑定(bind) WPF 中 WebBrowser 的 Source 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com