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

  • 相关阅读:
    横竖屏切换
    org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
    @Value() 使用方法
    调用第三方超时处理
    spring 配置注解定时器quartz01
    tomcat:PermGen space
    06-图3 六度空间 (30分)
    06-图2 Saving James Bond
    06-图1 列出连通集 (25分)
    05-树9 Huffman Codes (30分)
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/8473685.html
Copyright © 2011-2022 走看看