我有一个用C#编写的工作应用程序,现在我想扩展该应用程序以允许用户在查看应用程序和查看内置Web浏览器(在同一应用程序窗口内)之间切换.
我还有一个单独的工作Web浏览器,它也是用C#编写的.
我刚刚在原始应用程序中添加了功能,包括"选项卡式"显示,其中原始应用程序将显示在第一个选项卡上,内置Web浏览器显示在第二个选项卡上.
应用程序的"选项卡式"显示是使用XAMLVisual Studio中的标记创建的.我现在想要将已用C#编写的Web浏览器实例添加到我在XAML标记中创建的第二个选项卡中.
它会是这样的:
<TabControl>
<TabItem Header="Browser">
<StackPanel>
<!-- Call/ instantiate the browser here -->
</StackPanel>
</TabItem>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在XAML标记内调用/创建浏览器实例...
浏览器已使用C#创建:
namespace Agent
{
public partial class Browser : Form
{
public Browser()
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释如何Browser在XAML标记的内部创建一个实例?
编辑
好的,所以我按照建议的答案中的建议编辑了我的XAML标记 - 我现在有:
<Window ...
xmlns:Agent="clr-namespace:Agent"
...>
<Grid>
...
<TabControl>
<TabItem Header="R">
<StackPanel>
...
</StackPanel>
</TabItem>
<TabItem Header="Browser">
<Agent:Browser x:Name="Browser" />
</TabItem>
</TabControl>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我还更新了我的Browser.cs课程,现在它正在扩展UserControl,而不是Form:
public partial class Browser : UserControl{
Run Code Online (Sandbox Code Playgroud)
但是,我收到了一行编译错误:
<Agent:Browser x:Name="Browser" />
Run Code Online (Sandbox Code Playgroud)
其中说:
名称"Browser"在命名空间"clr-namespace:Agent"中不存在.
但显然Browser确实存在Agent,如我在此处所包含的代码所示......实际上<Agent:Browser x:Name="Browser />,当我输入行时,当我输入时:,Browser是自动完成菜单中出现的选项之一...
我在这做错了什么?为什么编译器不认为Browser存在于内部Agent?
在XAML中实例化任何对象的关键是确保声明命名空间.您可以提供任何XML前缀并将其分配给您的CLR命名空间(ref),它将像一个using语句.例如:
<TabControl xmlns:agent="clr-namespace:Agent">
<TabItem Header="Browser">
<StackPanel>
<agent:Browser/>
</StackPanel>
</TabItem>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
注意:您的对象必须扩展UIElement(或其子项之一)才能在XAML树中工作.如果您的控件是WinForms控件,您需要找到等效的XAML控件或将其包装在WindowsFormsHost(ref)中.
WPF与WinForms
本节的目的是帮助识别命名空间中的平台代码,以及一些权衡.我已经使用了两者,并且可以从经验中说,他们每个人都有好点,而且......不是那么好点.
System.Windows.Forms命名空间中,可通过引用System.Windows.Forms.dll程序集来使用.System.Windows和System.Windows.Controls名称空间中,并且可通过引用一组DLL来使用如果你刚刚开始,我会继续坚持下去,为WPF开始更重的学习曲线.它将提供一个基本的理解,转移到其他平台,如Windows应用商店应用程序等.
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |