zoukankan      html  css  js  c++  java
  • Winform中使用WPF控件并动态读取Xaml

    1、添加新项

    2、在构造函数中加入

        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
                Grid grid = null;
                String xamlFile = @"C:Userszgjsource
    eposWindowsFormsApp1	est.xaml";
                using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
                {
                    grid = (Grid)XamlReader.Load(fs);
                }
                grid1.Children.Add(grid);
            }
        }

    3、test.xaml内容

    <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
            <StackPanel x:Name="test_panel">
                <Button x:Name="but1" Height="25" Width="60">but1</Button>
                <Button x:Name="but2" Height="25" Width="60">but2</Button>
            </StackPanel>
        </Grid>

    4、将usercontrol拖到winform窗体上即可显示

     5、如果test.xaml的根节点为window,需要分离,注意加黑部分。

     /// <summary>
        /// UserControl1.xaml 的交互逻辑
        /// </summary>
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
                Window window = null;
                String xamlFile = @"C:Userszgjsource
    eposWindowsFormsApp1	est.xaml";
                using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
                {
                    window = (Window)XamlReader.Load(fs);
                }
                Grid grid = (Grid)window.Content;
                DependencyObject parent = grid.Parent;
                if (parent != null)
                {
                    parent.SetValue(ContentPresenter.ContentProperty, null);
                }
                grid1.Children.Add(grid);
            }
        }
    <Window 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="test" Height="300" Width="300">
        <Grid>
            <StackPanel x:Name="test_panel">
                <Button x:Name="but1" Height="25" Width="60">but1</Button>
                <Button x:Name="but2" Height="25" Width="60">but2</Button>
            </StackPanel>
        </Grid>
    </Window>

     源程序在QQ群:616945527,winform加载WPF例子。

  • 相关阅读:
    android开发之socket通信 向PC机发信息
    android:screenOrientation的说明
    java环境变量配置
    maven-webapp项目pom.xml配置
    maven设置本地仓库及配置阿里云镜像
    zxing生成二维码
    jQuery日期获取月和星期
    jquery实现导航栏分级切换
    servlet监听器统计在线人数
    xml配置utf-8编码过滤器
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/8473685.html
Copyright © 2011-2022 走看看