`

动态加载XAML文件(2)

阅读更多

C#代码部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Threading;

namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            this.Loaded += new RoutedEventHandler(MainPage_Loaded);

        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            WebClient _wc = new WebClient();
            _wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(_wc_DownloadProgressChanged);
            _wc.OpenReadCompleted += new OpenReadCompletedEventHandler(_wc_OpenReadCompleted);
            _wc.OpenReadAsync(new Uri("SilverlightApplication2.xap", UriKind.Relative));
        }

        void _wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            _progress1.Text = e.ProgressPercentage.ToString() + "%";
            if (e.ProgressPercentage == 100)
            {
                _progress1.Visibility = Visibility.Collapsed;
            }
        }

        void _wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            System.Windows.Resources.StreamResourceInfo Info = new System.Windows.Resources.StreamResourceInfo(e.Result, "application/binary");
            AssemblyPart AP = new AssemblyPart();
            System.Reflection.Assembly Asm;
            System.Windows.Resources.StreamResourceInfo streamInfo = Application.GetResourceStream(Info, new Uri("SilverlightApplication2.dll", UriKind.Relative));
            Asm = AP.Load(streamInfo.Stream);

            var obj = (Asm.CreateInstance("SilverlightApplication2.MainPage") as FrameworkElement);
            obj.SetValue(Grid.ColumnProperty, 0);
            obj.SetValue(Grid.RowProperty, 0);
            LayoutRoot.Children.Add(obj);

        }

    }
}

XAML部分:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
  <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBlock x:Name="_progress1" FontSize="30" Text="0%" Grid.Row="0" Grid.Column="0"/>
        <TextBlock x:Name="_progress2" FontSize="30" Text="0%" Grid.Row="0" Grid.Column="1"/>
        <TextBlock x:Name="_progress3" FontSize="30" Text="0%" Grid.Row="1" Grid.Column="0"/>
        <TextBlock x:Name="_progress4" FontSize="30" Text="0%" Grid.Row="1" Grid.Column="1"/>
  </Grid>
</UserControl>
 

 

 

 

分享到:
评论

相关推荐

    015.VS2017实现WPF_XamlReader_动态加载Xaml文件演示版.rar

    2. 创建XamlReader实例:使用XamlReader的Load方法加载Xaml文件内容。这通常涉及读取文件内容为字符串,然后将其传递给Load方法。 ```csharp string xamlContent = File.ReadAllText("PathToYourXamlFile.xaml"); ...

    Wpf动态加载Xaml的3D模型文件

    2. **XamlReader加载**:使用`System.Xaml.XamlReader`类,我们可以动态加载XAML文件并将其转换为对应的.NET对象。例如: ```csharp var stream = new FileStream("Model3D.xaml", FileMode.Open); var ...

    在WPF中动态加载XAML中的控件实例代码

    在WPF(Windows Presentation Foundation)开发中,动态加载XAML(Extensible Application Markup Language)控件是一种常见的需求,尤其在创建可扩展或模块化的应用程序时。XAML是一种用于描述用户界面和逻辑的XML...

    silverlight图表oxyplot例子--动态加载XAML

    2. **动态加载 XAML** 动态加载 XAML 文件是通过 XamlReader 类实现的,该类可以读取 XAML 字符串或文件,并将其转换为对象树。在 Silverlight 应用中,你可以将 XAML 文件内容读入字符串,然后使用 XamlReader....

    wpf把xaml保存成gif png 或者 jpg

    1. **加载XAML**:首先,你需要解析XAML文件并实例化对应的UI元素。这可以通过使用`XamlReader.Load()`方法完成,它将XAML字符串转换为`UIElement`对象。 2. **创建`RenderTargetBitmap`**:接下来,创建一个`...

    wpf mvvm动态加载菜单,无限级

    当应用启动时,视图模型可以从数据库、配置文件或任何其他数据源加载菜单数据,然后构建这个树形结构。 在WPF中,我们可以使用`ObservableCollection&lt;T&gt;`来存储菜单项,因为这个集合是支持数据绑定的,可以实时反映...

    WPF动态调用资源文件

    在Windows Presentation Foundation(WPF)框架中,动态调用资源文件是一种常见的技术,它使得开发者能够在运行时根据需求加载和应用不同的资源。标题中的“WPF动态调用资源文件”特指在WPF应用程序中,如何根据用户...

    用xamlreader读写XAML页面

    通过使用XAMLReader,我们可以加载一个XAML文件,将其转换为一系列的对象实例,这些对象可以直接在应用程序中使用。XAMLReader的主要方法有`Read()`,它会返回一个`XamlNode`对象,表示XAML文档中的下一个节点。...

    XAML入门 word文档

    - **从代码中加载XAML**:除了静态加载XAML文件,还可以在运行时动态加载和解析XAML,以实现更灵活的应用程序设计。 学习XAML可以帮助开发者高效构建美观且功能丰富的桌面和移动应用程序,理解其语法和机制是成为...

    WPF后台动态调用样式文件

    在某些场景下,我们可能需要在后台动态地加载和应用样式文件,以实现更加灵活和可扩展的应用设计。本文将深入探讨如何在WPF后台动态调用样式文件,以实现这一功能。 首先,我们需要理解WPF中的样式和资源。样式...

    Xamarin XAML语言教程

    - 创建XAML文件后,需要将其与代码文件关联起来,以便在运行时加载并显示界面。 - **创建项目后再创建XAML文件**: - 在项目创建完成后,手动添加XAML文件。 - **创建项目时创建XAML文件**: - 在创建项目时选择...

    silverlight

    在压缩包文件"DynamicallyLoadXaml"中,可能包含了一个示例项目或代码片段,演示了如何在Silverlight 2中动态加载和解析Xaml文件。通过深入研究和实践这个示例,你可以更好地理解和掌握上述知识点,从而在自己的项目...

    【示例】WPF使用最简洁的代码动态加载网络图片

    开发者可以通过打开解决方案文件并运行项目,查看和学习如何在实际应用中动态加载网络图片。 总之,WPF提供了一种简单而有效的方法来动态加载网络图片。通过结合`Image`控件和`BitmapImage`类,我们可以轻松地将...

    ILSpy_2.1.0.1603 baml存为xaml代码

    3. `ILSpy.sln`、`ILSpy.suo`:这是ILSpy项目的解决方案文件和用户选项文件,用Visual Studio打开`.sln`文件可以加载整个项目,`.suo`文件则存储了用户特定的设置和调试信息。 4. `README.txt`:通常包含项目的简短...

    XAML代码加载为相应的对象

    加载外部XAML文件 除了直接处理XAML字符串,我们还可以从文件中读取XAML并将其转换为对象。这在处理较大的界面定义时尤为有用,因为将这些定义存储在单独的文件中可以提高代码的可读性和可维护性。 ```csharp ...

    示例描述:本章介绍了XAML的语法,包括原理、使用方法以及事件处理等等。

    第8章(\C08) 示例描述:本章介绍了XAML的语法,包括原理、使用方法以及事件处理等等。 AttachedProperty 使用XAML中的附加属性。 CodebehindDemo 使用XAML中的... XamlReaderDemo 动态加载和编译XAML示例。

    XAML入门精通资料

    - **从代码中加载XAML**:通过`XamlReader`类可以从代码动态加载和解析XAML。 - **XAML相关主题**:还有许多其他主题,如数据绑定、样式和模板等,这些是构建复杂UI的关键部分。 XAML的灵活性和声明性使得它成为...

    WPF资源文件在DLL中的用法

    2. **引用ResourceDictionary**:在主程序的App.xaml或需要使用资源的XAML文件中,通过`MergedDictionaries`引用DLL中的`Resources.xaml`: ```xml ,,,/MyDllName;component/Resources.xaml" /&gt; ``` 现在...

    SVG转 XAML最好的免费工具!

    - 运行`SharpVectors.exe`:这个可执行文件应该是SVG到XAML转换工具的主程序,用户可以通过它加载SVG文件并进行转换操作。配置文件`SharpVectors.exe.config`可能包含了应用的配置信息,如路径设置、版本信息等。 ...

    XAML详解文档

    - **从代码中加载XAML**:可以动态地从代码中加载和解析XAML。 - **XAML语法详述**:包含更详细的语法指南,如属性集合、嵌套属性和多态对象实例化等。 总之,XAML为WPF提供了一种强大且灵活的方式来声明UI,使得...

Global site tag (gtag.js) - Google Analytics