有人知道如何在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>
6条答案
按热度按时间s6fujrry1#
问题是
WebBrowser.Source
不是DependencyProperty
。一种解决方法是使用一些AttachedProperty
魔法来启用此功能。然后在你的xaml中做:
ygya80vv2#
我写了一个 Package 器usercontrol,它使用了DependencyProperties:
XAML:
C编号:
像这样使用它:
唯一的问题是WebBrowser控件不是“纯粹的”wpf...它实际上只是一个win32组件的 Package 器。这意味着控件不会尊重z索引,并且总是覆盖其他元素(例如:在scrollviewer中,这可能会引起一些麻烦)有关MSDN上这些win32-wpf问题的更多信息
dwbf0jvd3#
我稍微修改了托德的优秀答案,以生成一个版本,该版本可以处理来自Binding源代码的字符串或URI:
2wnc66cl4#
好主意托德
我已经做了类似的RichTextBox。选择。文本在Silverlight 4现在。感谢您的帖子。工程罚款。
下面是Xaml-Code。
b09cbbtk5#
这是对托德和Samuel的答案的改进,利用了一些基本的逻辑前提,并使用了空合并运算符。
1.如果浏览器为空或位置为空,则我们无法使用或导航到空页面。
1.当#1中的项不为空时,则在赋值时,如果新值是URI,则使用它。如果不是并且URI为空,则聚结它必须是可以放入URI的字符串;因为#1强制字符串不能为null。
zlwx9yxi6#
您需要在指向类文件的
xaml
文件的前几行声明它