Weiß jemand, wie man die .Source-Eigenschaft des WebBrowser in WPF (3.5SP1) datenbindet? Ich habe eine Listenansicht, in der ich links einen kleinen WebBrowser und rechts einen Inhalt haben und die Quelle jedes WebBrowser mit dem URI in jedem an das Listenelement gebundenen Objekt datenbinden möchte.
Dies ist, was ich bisher als Proof of Concept habe, aber das " <WebBrowser Source="{Binding Path=WebAddress}"
" kompiliert nicht.
<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>
Ich habe die ausgezeichnete Antwort von Todd ein wenig geändert, um eine Version zu erstellen, die entweder mit Strings oder Uris aus der Binding-Quelle zurechtkommt:
quelle
Ich habe eine Wrapper-Benutzersteuerung geschrieben, die die DependencyProperties verwendet:
XAML:
C #:
und benutze es so:
Das einzige Problem dabei ist, dass das WebBrowser-Steuerelement kein "reines" wpf ist ... es ist eigentlich nur ein Wrapper für eine Win32-Komponente. Dies bedeutet, dass das Steuerelement den Z-Index nicht berücksichtigt und immer ein anderes Element überlagert (z. B. in einem Scrollviewer kann dies zu Problemen führen). Weitere Informationen zu diesen win32-wpf-Problemen in MSDN
quelle
Coole Idee Todd.
Ähnliches habe ich jetzt mit der RichTextBox.Selection.Text in Silverlight 4 gemacht. Danke für deinen Beitrag. Funktioniert gut.
Hier ist der Xaml-Code.
quelle
Sie können auch eine spezielle verwenden separate Proxy-Steuerung verwenden . Dies gilt nicht nur für den WebBrowser-Fall, sondern auch für solche Steuerelemente.
quelle
Dies ist eine Verfeinerung der Antwort von Todd und Samuel, um einige grundlegende logische Prämissen zu nutzen und den Null-Koaleszenz-Operator zu verwenden.
quelle
Sie müssen es in den ersten Zeilen der
xaml
Datei deklarieren, die auf die Klassendatei verweistquelle