在.NET中,我们可以从Main(string[])或的参数中轻松访问字符串数组中的split命令行参数Environment.GetCommandLineArgs().但是,有没有办法将未解析的命令行作为一个字符串?
背景:我的应用程序将自己添加到FileExplorer上下文菜单(如Notepad ++).当它以这种方式启动时,文件名将在没有引用的情况下传入,这意味着如果路径中有空格,则会将其分解.我知道我可以通过%1在注册表中包含引号来解决这个问题myapp.exe "%1",但是当我检查其他应用程序的注册表时,他们没有这样做.他们很平常notepad.exe %1- 他们得到了完整的命令行.我想知道它是否可能在.NET中以及如何实现.
有一些帖子讨论ListView.SelectedItems了为非平凡数量的代码添加数据绑定能力.在我的场景中,我不需要设置它ViewModel,只需获取选定的项目以便对它们执行操作并且它由命令触发,因此也不需要推送更新.
是否有一个简单的解决方案(在代码行方面),可能在代码隐藏?只要View并且ViewModel不需要互相引用,我就可以使用代码隐藏.我认为这是一个更通用的问题:" VM从按需查看数据的最佳实践 ",但我似乎找不到任何东西......
我有一个数据绑定TreeView,我想绑定SelectedItem.这种附加的行为工作完全没有HierarchicalDataTemplate,但与它连接的行为只能单向(UI数据)不是别的,因为现在e.NewValue是MyViewModel不是TreeViewItem.
这是附加行为的代码段:
private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var item = e.NewValue as TreeViewItem;
if (item != null)
{
item.SetValue(TreeViewItem.IsSelectedProperty, true);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的TreeView定义:
<Window xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
<TreeView ItemsSource="{Binding MyItems}" VirtualizingStackPanel.IsVirtualizing="True">
<interactivity:Interaction.Behaviors>
<behaviors:TreeViewSelectedItemBindingBehavior SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
</interactivity:Interaction.Behaviors>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:MyViewModel}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Window>
Run Code Online (Sandbox Code Playgroud)
如果我可以获得TreeView对附加行为方法的引用OnSelectedItemChanged,也许我可以使用此问题中的答案来获取TreeViewItem但我不知道如何到达那里.有谁知道如何以及它是正确的方式去?
data-binding wpf treeview hierarchicaldatatemplate treeviewitem
在WPF项目中,只有在XAML中使用的引用不被复制到bin文件夹,即使CopyLocal设置为true,在抱怨这个职位.对于MVVM模式,通常使用第三方控件而根本没有代码隐藏引用.
受此帖的启发,我正在使用下面的解决方法.然而,这很容易,必须手动维护变量列表与整个项目中XAML文件中实际使用的变量列表同步,这些变量列表会不断变化.我的问题是,是否有真正的解决方案或更好的解决方法?(我知道使用post-build脚本的想法,IMHO不易发现并且更容易受到更改.)
internal static class BuildTricker
{
private static readonly RadTreeView radTreeView;
static BuildTricker()
{
// Set and get once to avoid compiler optimization.
radTreeView = null;
if (radTreeView != null)
{
throw new InvalidOperationException("This should never happen.");
}
}
}
Run Code Online (Sandbox Code Playgroud) 在C#中,如果我有一个目录路径和一个带通配符的相对文件路径,例如
"c:\foo\bar" 和 "..\blah\*.cpp"
有一种简单的方法来获取绝对文件路径列表吗?例如
{ "c:\foo\blah\a.cpp", "c:\foo\blah\b.cpp" }
背景
有一个源代码树,其中任何目录都可以包含构建定义文件.此文件使用带通配符的相对路径来指定源文件列表.任务是为每个这些构建定义文件生成所有源文件的绝对路径列表.
我是WPF的新手,请原谅我,如果这个问题没有意义.是否有在数据上下文更改之前触发的事件?我想在切换数据上下文之前提交挂起的数据更改.
我想向我的 .NET 应用程序添加免注册 COM 引用。免注册意味着用户无需将 COM 组件注册到他们的系统即可运行应用程序。
我找到了很多关于这个主题的文章(例如MSDN、这个 S/O 问题等),但没有一篇包含具体步骤。这是我尝试过但没有奏效的方法:
foo.dll如本答案中所述,使用 mt.exe 为COM dll 生成清单(例如)。foo.dll和foo.dll.manifest到我的应用程序作为“构建操作”=“内容”和“复制到输出目录”=“始终复制”。interop.foo.dll随附的引用foo.dll。使用此部分添加应用清单文件:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="foo" />
</dependentAssembly>
</dependency>
Run Code Online (Sandbox Code Playgroud)构建并运行。
有一个错误说应用程序配置不正确。在<assemblyIdentity>没有运气的情况下尝试了不同的值。
有人可以分享经验吗?谢谢。
我正在使用 WPFDataGrid来显示名称/值对。SelectionUnit设置为FullRow因为它看起来不错,但是,当用户选择一行并按Ctrl+时C,他确实想要复制值文本,而不是默认行为(名称和值的串联)。在寻找解决方案时,我发现了CopyingRowClipboardContentevent,但MSDN 页面没有有关如何使用它的信息。还是我应该捕获我PreviewKeyDown自己?
我的MyControl.cs应用程序项目(.exe)中有一个WPF自定义控件,其样式位于资源字典中MyControlResources.xaml.此xaml app.xaml作为合并字典的一部分指定.一切正常.
现在我想将此自定义控件移动到应用程序引用的现有DLL项目中.有没有办法可以在DLL中创建资源字典"赋值"并使其对调用者透明,即应用程序项目可以像使用任何内置控件一样使用它,而不需要您了解有关资源字典的任何信息?
我读过关于创建一个新的自定义控件项目可以做到这一点,但它只是一个我不想为其创建新项目的控件.任何人都知道如何在现有的类库DLL中执行此操作?
在.NET中,我可以使用我拥有的AD组的身份发送电子邮件吗?
我目前的代码:
using (var smtp = new SmtpClient("smtp.somecompany.com"))
{
smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
var mail = new MailMessage("mygroup@somecompany.com", recipients)
{
...
};
smtp.Send(mail);
}
Run Code Online (Sandbox Code Playgroud)
而且我得到了
System.Net.Mail.SmtpException:邮箱不可用.服务器响应为:5.7.1客户端无权作为此发件人发送
我知道我可以通过使用发送给不同的用户
smtp.Credentials = new NetworkCredential(...)
Run Code Online (Sandbox Code Playgroud)
并传递名称/密码对.
但是,AD组没有密码,我认为组别名甚至不算作用户名.
那么可以发送电子邮件作为组吗?
wpf ×6
.net ×4
c# ×3
data-binding ×2
com-interop ×1
copy-local ×1
copy-paste ×1
datacontext ×1
datagrid ×1
email ×1
listview ×1
msbuild ×1
mvvm ×1
path-combine ×1
regfreecom ×1
smtp ×1
treeview ×1
treeviewitem ×1
wildcard ×1
xaml ×1