好奇如果使用ElementHost在Winform应用程序中托管WPF UserControl 有什么缺点吗?
我问,因为总的来说我觉得我需要花很多时间创建一个新的WPF应用程序,其基本界面看起来不错.从某种意义上讲,如果我创建一个新的Winforms应用程序并对其进行一些控制,我最终会得到一个基本界面,其外观和行为类似于许多其他应用程序,但看起来并不简单.如果我对WPF应用程序做同样的事情,我觉得我没有达到相同的结果,我最终得到一个白色背景的"普通"应用程序,除非我将角色更改为设计师并花费额外的时间使其看起来确定办法.
但是有些情况下WPF对我来说是可取的,因为它相对容易创建一个风格化的界面.考虑视频播放器控件; 在WPF中,我可以创建看起来非常漂亮和自定义的东西,但比Winforms控件花费的时间和精力要少得多.在这些情况下,我使用WPF是有道理的,因为我最终花费的时间少于覆盖OnPaint的时间:-).
我意识到我使用了很多主观术语,但这是我在原始问题背后的推理.
更新:
只是为了澄清我的"视频播放器控制"示例.WPF不仅可以让我MediaElement
玩,而且如果我想说,暂停时在视频上叠加一个播放按钮,或者我想要一个半透明的"播放/暂停/停止/音量"栏来显示鼠标在某个位置,WPF比任何Winforms替代方案都简单得多.
编辑:
也许我有一个错误的配置选项或者其他东西,但是当我查看WPF与Winforms控件时,"描述"部分的消失也令人沮丧.更加令人沮丧的是,在WPF属性表单中按F1并不会将您带到您所在的特定属性/事件.
更新:
还有谁?我更关注通过在ElementHost中托管WPF UserControl而引入的性能影响和/或功能限制.到目前为止,它听起来像是运行时的一次性开销,但这就是全部吗?
我正在努力在WiX中启用主要的升级功能.
我希望安装程序的每个新版本都是主要升级(完全卸载,然后是新安装),因为我们不需要不同的升级和干净安装版本.
我开始试图使用标签的东西,但我一直得到"另一个版本已安装." 运行安装程序时出现错误消息.
所以我实现了V3.5中添加的新标签,使升级更容易.我仍然收到错误消息.
然后,我在某处读到您需要更改每个新版本的Id GUID.所以我设置Id ="*"来让WiX生成它们.
现在,当我安装较新版本时,它不会卸载旧版本,最终会对同一文件夹进行两次安装.我解决了这个问题,因为运行MSI(新的或旧的)会调出修复/删除屏幕.
该程序也没有被新版本覆盖.
这是我的WiX脚本的开始:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="Foo"
Language="1033"
Codepage="1252"
Version="!(bind.FileVersion.Foo.exe)"
Manufacturer="Foo Bar Ltd."
UpgradeCode="dac2fab2-7d76-4e47-b25f-0748380dab81">
<Package
Description="Foo"
Comments="This installer database contains the logic and data required to install Foo."
InstallerVersion="300"
Languages="1033"
SummaryCodepage="1252"
Platform="x86"
Compressed="yes" />
<!-- Remove older versions -->
<!-- Important note: MSI ignores the last version digit 1.0.0.? when comparing versions, so always change at least the 3rd digit for new external releases-->
<MajorUpgrade DowngradeErrorMessage="The version currently …
Run Code Online (Sandbox Code Playgroud) 只是想知道是否有办法让Visual Studio 2008 Express Edition生成由我的应用程序的安装程序创建的普通 exe文件?
我厌倦了ClickOnce应用程序文件.我已经设置了所有这些文件关联,现在我需要为我的应用程序实际安装一个安装程序,代码中的文件关联设置不起作用,因为现在它们是"ClickOnce"应用程序文件而不是普通的exe文件.不,VS并不会在所有的应用程序的ClickOnce创建的任何exe文件.
任何帮助深表感谢
谢谢 :)
我想严格开始测试驱动开发.但是,我想知道我应该测试多少Moose和MooseX :: FollowPBP生成的方法.例如,我有以下类:
package Neu::Series;
use Moose;
use MooseX::FollowPBP;
use File::Find::Wanted;
has 'file_regex' => (
isa=>'RegexpRef',
is=>'rw',
default => sub{
qr{
[A-Z] #Uppercase letter
[a-zA-Z]* #any letter, any number of times
[-] #dash
( #open capturing parenthesis
[0-9]
[0-9]
[0-9]
[0-9]
[a-zA-Z]? #any letter, optional
) #close capturing parenthesis
}xms;
},
);
has 'top_dir' => (
isa=>'Str',
is=>'rw',
);
has 'access' =>(
isa=>'Neu::Access',
is=>'ro',
required=>1,
);
1;
Run Code Online (Sandbox Code Playgroud)
我目前的测试脚本是:
use strict;
use warnings;
use Test::More tests => 8;
use Neu::Access;
BEGIN{ …
Run Code Online (Sandbox Code Playgroud) 在阅读标准.Net用户设置时,我们遇到了罕见的异常(这是VS 2008中"项目属性"中的设置):
System.Configuration.ConfigurationErrorsException was caught
Message="Configuration system failed to initialize"
Source="System.Configuration"
BareMessage="Configuration system failed to initialize"
Line=0
StackTrace:
at System.Configuration.ConfigurationManager.PrepareConfigSystem()
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection()
at System.Diagnostics.DiagnosticsConfiguration.Initialize()
at System.Diagnostics.DiagnosticsConfiguration.get_IndentSize()
at System.Diagnostics.TraceInternal.InitializeSettings()
at System.Diagnostics.TraceInternal.get_Listeners()
InnerException: System.Configuration.ConfigurationErrorsException
Message="Unexpected end of file has occurred. The following elements are not closed: setting, SettingsTest.Properties.Settings, userSettings, configuration. Line 7, position 1. (C:\\Documents and Settings\\USER\\Local Settings\\Application Data\\Hitcents\\SettingsTest.vshost.exe_Url_ghwhc20utv4toanuinmj0pfsljthcugo\\1.0.0.0\\user.config line 7)"
Source="System.Configuration"
BareMessage="Unexpected end of file has occurred. The following elements are not closed: setting, SettingsTest.Properties.Settings, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编组一个对象作为其字段之一的对象.
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
Run Code Online (Sandbox Code Playgroud)
dataObject可以是许多不同类型的未知类型之一,因此指定每个地方不仅不切实际而且不可能.当我尝试编组对象时,它表示该类不为上下文所知.
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
Run Code Online (Sandbox Code Playgroud)
"MockProcessData及其任何超类都不为此所知." 就是我得到的.
有没有办法解决这个错误?
我有一个WPF ListBox控件,显示RSS源的项目.我偶尔会检查RSS源的来源以获取新项目.一旦我检测到一个新项目,我就将它添加到observable集合中,该集合立即将新项目添加到ListBox显示中.
有没有办法从顶部"滑入"新项目,推倒现有项目?我怎么会达到这样的效果?可以使用ListBox完成,还是需要使用我自己的容器,例如StackPanel和动画,例如以编程方式添加新控件的高度?
Scala有一个API来对String进行"chomp"吗?我想将字符串"abcd \n"转换为"abcd"
谢谢Ajay
我使用PHP(程序和OO)进行了大量的Web开发.在过去的几年里,我参与了嵌入式系统的Java开发(而不是JSP和Servlets).我非常精通使用Java SE,并且最近获得了一个不错的Web开发工作.我正在考虑使用JSP和Servlets开发这个站点,但这完全是为了我自己使用Java的知识进展.是否有任何真正的理由在PHP或ASP等上使用JSP和Servlet?问题是许多托管公司不提供例如Tomcat或其他JSP服务器,如果他们这样做,那就太贵了.
对于任何反馈,我们都表示感谢.
GF