• 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例子。

  • 相关阅读:
    bzoj1257 [CQOI2007]余数之和sum
    bzoj1053 [HAOI2007]反素数ant
    bzoj3680 吊打XXX
    CodeVS1344 线型网络
    bzoj1925 [Sdoi2010]地精部落
    2016年北大高代考研题解答
    巴塞尔问题(Basel problem)的多种解法
    积分计算题
    PDF添加水印的办法
    Matlab技巧1:在同一坐标系上绘制两个函数图像
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/8473685.html
Copyright © 2020-2023  润新知