我正在尝试将程序快捷方式添加到开始菜单快捷方式中的现有文件夹中.例如All Programs -> AppNameFolder -> AppNameVersionFolder -> AppShortcut
为了实现这一点,我添加了额外的行:
<Directory Id="ProgramMenuFolderApp" Name="App">
<Directory Id="ProgramMenuDir" Name="APP 6.3.0">
Run Code Online (Sandbox Code Playgroud)
到我的.wxs文件中的以下代码:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="Program Files">
<Directory Id="CompanyName" Name="CompanyName">
<Directory Id="App" Name="App">
<Directory Id="INSTALLDIR" Name="App 6.3.0">
<Component Id="MainExecutable" Guid="23FFE6FD-2BEA-4946-9875-8DBEEA5AAF55">
<File Id="AppEXE" Name="App.exe" Source="App.exe" KeyPath="yes">
<Shortcut Id="startmenu" Directory="ProgramMenuDir" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopApp" Directory="DesktopFolder" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
</File>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuFolderApp" Name="App">
<Directory Id="ProgramMenuDir" Name="App6.3.0">
<Component Id="ProgramMenuDir" …Run Code Online (Sandbox Code Playgroud) 这是问题的扩展为什么我需要一个IoC容器而不是直接的DI代码?
我一直在学习Ninject,并提出了以下示例,该示例通过手动方式进行DI和Ninject做DI的方式:
class Program
{
static void Main(string[] args)
{
NinjectWay();
ManualWay();
Console.ReadKey();
}
private static void ManualWay()
{
Console.WriteLine("ManualWay***********************");
IWeapon sword = new Sword();
Samurai samurai = new Samurai(sword);
Console.WriteLine(samurai.Attack("ManualWay..."));
// change weapon
IWeapon dagger = new Dagger();
samurai.Weapon = dagger;
Console.WriteLine(samurai.Attack("ManualWay..."));
IWeapon weapon = new Shuriken();
IWarrior ninja = new Ninja(weapon);
Console.WriteLine("Manual way.. inject shuriken when a ninja. " + ninja.Weapon.Name);
IWarrior ninja2 = new Ninja(weapon);
}
private static void NinjectWay()
{
Console.WriteLine("NinjectWay***********************");
IKernel kernel = new …Run Code Online (Sandbox Code Playgroud) 我已经阅读了Josh Smiths关于使用RelayCommand查看模型的绑定命令的文章.但是,我需要将ApplicationCommands.Save绑定到视图模型,以便当用户单击保存菜单项时,它将在窗口中处理.这怎么可能?
我有一个类似于的接口类:
class IInterface
{
public:
virtual ~IInterface() {}
virtual methodA() = 0;
virtual methodB() = 0;
};
Run Code Online (Sandbox Code Playgroud)
然后我实现了界面:
class AImplementation : public IInterface
{
// etc... implementation here
}
Run Code Online (Sandbox Code Playgroud)
当我在应用程序中使用接口时,最好创建具体类AImplementation的实例.例如.
int main()
{
AImplementation* ai = new AIImplementation();
}
Run Code Online (Sandbox Code Playgroud)
或者最好在接口中放置工厂"创建"成员函数,如下所示:
class IInterface
{
public:
virtual ~IInterface() {}
static std::tr1::shared_ptr<IInterface> create(); // implementation in .cpp
virtual methodA() = 0;
virtual methodB() = 0;
};
Run Code Online (Sandbox Code Playgroud)
然后我就可以在main中使用这样的接口:
int main()
{
std::tr1::shared_ptr<IInterface> test(IInterface::create());
}
Run Code Online (Sandbox Code Playgroud)
第一种选择似乎是常见的做法(不是说它的权利).但是,第二个选项来自"Effective C++".
我有一个C++/CLI类:
public ref class Foobar
{
public:
// methods here etc..
// operator overload
double operator[](int index);
}
Run Code Online (Sandbox Code Playgroud)
如果我Foobar尝试过,我如何从C#访问:
Foobar foo = new Foobar();
int i = foo[1];
Run Code Online (Sandbox Code Playgroud)
我明白了 CS0021: Cannot apply indexing with [] to an expression of type 'Foobar'
我有一个不是静态资源的位图对象。通常,使用WPF中的图像绑定可以绑定到字符串路径。但是,我有一个动态创建的位图对象,我想绑定到该对象。是否可以做类似的事情:
<WrapPanel x:Name="imageWrapPanel" HorizontalAlignment="Center">
<Image Source="{Binding Material1}" Margin="10" />
<Image Source="/NightVision;component/Images/concrete_texture.tif" Margin="10" />
</WrapPanel>
Run Code Online (Sandbox Code Playgroud)
在文件后面的代码中,我有一个公共访问器:
public Bitmap Material1 {
get
{
return new Bitmap(/* assume created somewhere else*/)
}
}
Run Code Online (Sandbox Code Playgroud)
上面的方法显然不能正常工作,有没有办法做类似的事情?
我在我的WPF应用程序中使用Entity Framework和SQL CE 4.0.如何根据本文设置最大数据库大小,http://blogs.msdn.com/b/sqlservercompact/archive/2007/06/13/the-story-of-max-database-size-connection- string-parameter.aspx,其中指出:
我们并不总是增长到4 GB,分配共享内存以容纳支持4 GB的所有页面条目/引用是不明智的.
目前,我在尝试添加新数据时收到以下错误:
The database file is larger than the configured maximum database size.
Run Code Online (Sandbox Code Playgroud)
但是,DB只达到接近256MB,这与上面链接中的文章一致.
John Skeets回答了这个问题,选择单个列表的所有唯一组合,没有重复,使用LINQ,工作得非常好.
但是,有人可以逐个分解第一个答案如何工作的内部工作方式:
List<int> slotIds = new List<int> {1, 2, 3};
var query = slotIds.SelectMany((value, index) => slotIds.Skip(index + 1),
(first, second) => new { first, second });
Run Code Online (Sandbox Code Playgroud) 此问题与使用Mercurial hgsubversion扩展与SVN外部相关.但是,有关做a的问题的第二部分hg svn update尚未得到答复.
是否有可能将您提取的subversion存储库中的SVN外部转换为Mercurial子存储库?
什么是.NET MVC3(或MVC)购物车软件(开源或商业)?优选地,具有现有的支付网关.我只知道MvcMusicStore.还有其他人吗?
c# ×5
.net ×2
wpf ×2
asp.net-mvc ×1
c++ ×1
c++-cli ×1
data-binding ×1
hgsubversion ×1
installer ×1
interface ×1
linq ×1
mercurial ×1
mvvm ×1
ninject ×1
relaycommand ×1
sql-server ×1
startmenu ×1
windows ×1
wix ×1
xaml ×1