如何编译时不内嵌XAML文件

Kation 2013-04-30 06:54:51
XAML文件在编译时会嵌入到程序集中
在自动生成的代码中使用的Uri是"/程序集名;component/xxx.xaml"
能不能不内嵌入程序集,直接放在输出文件夹呢?
这样可以不重新编译,直接修改xaml文件就可以改出效果。
...全文
249 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
完美算法 2014-02-19
  • 打赏
  • 举报
回复
你很有想法,到微软来吧
qldsrx 2013-05-01
  • 打赏
  • 举报
回复
首先可以确定一点,使用XamlReader.Load肯定是不可以的,别指望那个会智能到将事件处理函数一起给Load出来。 然后就是你的需求,由于XAML的信息量非常庞大,因此你要后期加载就需要先学会自己解析xaml,解析后通过后台代码添加其中的各个节点内容。微软给的XamlReader.Load会过滤掉所有事件处理函数,后台绑定的方法都无法还原,因此只能用在简单资源文件或自定义控件(只有布局,无后台代码)的还原上,对于窗体这类重要的角色,必定存在后台代码的情况则无法使用。
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 12 楼 bidisty 的回复:
XAML文件属性,生成操作选无,删除关联的CS文件 以后你把这个XAML放你项目文件夹里,用后台动态加载
不满足需求,需要用到自动生成后台代码,需要用到x:Class、x:Name属性!
bidisty 2013-04-30
  • 打赏
  • 举报
回复
XAML文件属性,生成操作选无,删除关联的CS文件 以后你把这个XAML放你项目文件夹里,用后台动态加载
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 10 楼 bidisty 的回复:
静下来好好想想,看看WPF说明,是放你这块代码里用的吗?
这是VS自动生成的,请看你的WPF的窗体构造函数。 由于是VS的,所以不能修改里面的代码,不知道要如果才能改变XAML生成方式。
bidisty 2013-04-30
  • 打赏
  • 举报
回复
静下来好好想想,看看WPF说明,是放你这块代码里用的吗?
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 8 楼 bidisty 的回复:
XmlTextReader xmlreader = new XmlTextReader("d:\\a.xaml"); UIElement obj = XamlReader.Load(xmlreader) as UIElement; 明白了?

    /// <summary>
    /// MainPage
    /// </summary>
    public partial class MainPage : Wodsoft.Web.Controls.Page, System.Windows.Markup.IComponentConnector {
        
        private bool _contentLoaded;
        
        /// <summary>
        /// InitializeComponent
        /// </summary>
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
        public void InitializeComponent() {
            if (_contentLoaded) {
                return;
            }
            _contentLoaded = true;
            System.Uri resourceLocater = new System.Uri("/Wodsoft.WebPresentation.Test;component/mainpage.xaml", System.UriKind.Relative);
            
            #line 1 "..\..\MainPage.xaml"
            System.Windows.Application.LoadComponent(this, resourceLocater);
            
            #line default
            #line hidden
        }
        
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
            this._contentLoaded = true;
        }
    }
明白?
bidisty 2013-04-30
  • 打赏
  • 举报
回复
XmlTextReader xmlreader = new XmlTextReader("d:\\a.xaml"); UIElement obj = XamlReader.Load(xmlreader) as UIElement; 明白了?
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
如果你不设计自己的程序,那么你提出问题干什么呢?
自己做的框架,使用XAML技术,用到微软的XAML编辑器,XAML文件的生成操作为Page,自动把XAML嵌入程序集。 这样就做不到编译后修改XAML了。 相当于问,如何才能使WPF的XAML文件不编译进程序集,在编译后修改目录里的XAML文件即可修改界面。
  • 打赏
  • 举报
回复
如果你不设计自己的程序,那么你提出问题干什么呢?
bidisty 2013-04-30
  • 打赏
  • 举报
回复
XamlReader.Load 方法 (Stream) public static Object Load( Stream stream ) stream可以是:FileStream 类 FileStream 构造函数 (String, FileMode) public FileStream( string path, FileMode mode ) path可以你XAML的路径
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
http://msdn.microsoft.com/zh-cn/library/ms590398.aspx
我需要的是VS生成的代码从程序目录读取XAML,而不是从程序集内容里读取。
Kation 2013-04-30
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
http://msdn.microsoft.com/zh-cn/library/dd807378.aspx
xxx.xaml.cs的部分代码是自动生成的 载入路径也是自动生成的,没法改啊
著名的silverlight反编译工具 发现你感兴趣的Silverlight项目,可以使用Silverlight Spy进行侦测,查看部分源代码,以及项目结构,有利于Silverlight项目开发学习。 Silverlight Spy是一个免费的.NET 3.5工具,用来对显示Silverlight 2内容的网页进行详细的监测。这个工具使用它自己内嵌的浏览器,可以帮助用户浏览任何网站,并监测Silverlight。 Silverlight Spy的功能包括: 一般功能 能方便地访问所有应用程序细节的导航; 扩展的搜索功能(正在开发中)。 XAP包(注:XAP文件是Silverlight 2应用程序编译打包后的一个文件,包括了Silverlight 2应用程序所需的一切文件,如程序集、资源文件等) 查看和导出XAP包内容; 查看和导出程序集和资源文件; 查看.NET类型和成员,包括状态; 反编译.NET类型和成员(需要Reflector)。 独立存储 浏览独立存储结构; 查看和导出独立存储中的文件。 应用程序风格 查看和导出默认的控件风格; 查看和导出应用程序控件风格。 用户界面 通过应用程序中可视化的回馈,浏览用户界面对象模型; 通过在应用程序中选择用户界面元素,找到它们; 读写用户界面元素属性; 查看再生的用户界面对象模型的部分XAML文件; 查看用户界面的状态; 预览用户界面的独立部分(正在开发中); 监视用户界面元素产生的事件。 工具 微软Silverlight配置工具; 监测和验证跨域访问的策略文件; HTTP监视器提供对HTTP/HTTPS通信量的分析。 安装和使用Silverlight Spy的最小配置要求: IE 6或者更高版本; Silverlight 2 (Beta 2); Windows Installer 3.1; .NET Framework 3.5运行; 在他的网站上,Christmas Koenig发表了一个Silverlight Spy的综述。对于这个工具,Chris有着自己的看法: 到目前为止,经过一段间的试用,我真的真的喜欢上了这个工具。我知道许多人都投入到了Silverlight方面的开发,相信SilverlightSpy对他们来说是相当有帮助的,不论是作为调试工具还是用于学习。通过和Reflector的集成,这个工具功能再上一层楼。我强烈推荐你现在就到First Floor的官方网站上去下载Silverlight Spy。 Silverlight Spy现在可以从该公司的站点上下载到,而且还可以浏览到其他更多相关的信息。
著名的silverlight反编译工具 发现你感兴趣的Silverlight项目,可以使用Silverlight Spy进行侦测,查看部分源代码,以及项目结构,有利于Silverlight项目开发学习。 Silverlight Spy是一个免费的.NET 3.5工具,用来对显示Silverlight 2内容的网页进行详细的监测。这个工具使用它自己内嵌的浏览器,可以帮助用户浏览任何网站,并监测Silverlight。 Silverlight Spy的功能包括: 一般功能 能方便地访问所有应用程序细节的导航; 扩展的搜索功能(正在开发中)。 XAP包(注:XAP文件是Silverlight 2应用程序编译打包后的一个文件,包括了Silverlight 2应用程序所需的一切文件,如程序集、资源文件等) 查看和导出XAP包内容; 查看和导出程序集和资源文件; 查看.NET类型和成员,包括状态; 反编译.NET类型和成员(需要Reflector)。 独立存储 浏览独立存储结构; 查看和导出独立存储中的文件。 应用程序风格 查看和导出默认的控件风格; 查看和导出应用程序控件风格。 用户界面 通过应用程序中可视化的回馈,浏览用户界面对象模型; 通过在应用程序中选择用户界面元素,找到它们; 读写用户界面元素属性; 查看再生的用户界面对象模型的部分XAML文件; 查看用户界面的状态; 预览用户界面的独立部分(正在开发中); 监视用户界面元素产生的事件。 工具 微软Silverlight配置工具; 监测和验证跨域访问的策略文件; HTTP监视器提供对HTTP/HTTPS通信量的分析。 安装和使用Silverlight Spy的最小配置要求: IE 6或者更高版本; Silverlight 2 (Beta 2); Windows Installer 3.1; .NET Framework 3.5运行; 在他的网站上,Christmas Koenig发表了一个Silverlight Spy的综述。对于这个工具,Chris有着自己的看法: 到目前为止,经过一段间的试用,我真的真的喜欢上了这个工具。我知道许多人都投入到了Silverlight方面的开发,相信SilverlightSpy对他们来说是相当有帮助的,不论是作为调试工具还是用于学习。通过和Reflector的集成,这个工具功能再上一层楼。我强烈推荐你现在就到First Floor的官方网站上去下载Silverlight Spy。 Silverlight Spy现在可以从该公司的站点上下载到,而且还可以浏览到其他更多相关的信息。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧