小编NS.*_*.X.的帖子

在.NET中获取原始(非分裂)命令行

在.NET中,我们可以从Main(string[])或的参数中轻松访问字符串数组中的split命令行参数Environment.GetCommandLineArgs().但是,有没有办法将未解析的命令行作为一个字符串?

背景:我的应用程序将自己添加到FileExplorer上下文菜单(如Notepad ++).当它以这种方式启动时,文件名将在没有引用的情况下传入,这意味着如果路径中有空格,则会将其分解.我知道我可以通过%1在注册表中包含引号来解决这个问题myapp.exe "%1",但是当我检查其他应用程序的注册表时,他们没有这样做.他们很平常notepad.exe %1- 他们得到了完整的命令行.我想知道它是否可能在.NET中以及如何实现.

.net c# command-line-arguments

17
推荐指数
3
解决办法
4937
查看次数

在ViewModel中获取WPF ListView.SelectedItems

有一些帖子讨论ListView.SelectedItems了为非平凡数量的代码添加数据绑定能力.在我的场景中,我不需要设置它ViewModel,只需获取选定的项目以便对它们执行操作并且它由命令触发,因此也不需要推送更新.

是否有一个简单的解决方案(在代码行方面),可能在代码隐藏?只要View并且ViewModel不需要互相引用,我就可以使用代码隐藏.我认为这是一个更通用的问题:" VM从按需查看数据的最佳实践 ",但我似乎找不到任何东西......

.net data-binding wpf listview mvvm

13
推荐指数
2
解决办法
2万
查看次数

在HierarchicalDataTemplate应用的WPF TreeView中绑定SelectedItem

我有一个数据绑定TreeView,我想绑定SelectedItem.这种附加的行为工作完全没有HierarchicalDataTemplate,但与它连接的行为只能单向(UI数据)不是别的,因为现在e.NewValueMyViewModel不是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

13
推荐指数
1
解决办法
9301
查看次数

仅在XAML中使用的程序集不会复制到bin文件夹

在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)

msbuild wpf xaml copy-local

11
推荐指数
1
解决办法
1139
查看次数

在C#中使用通配符解析相对路径

在C#中,如果我有一个目录路径和一个带通配符的相对文件路径,例如

"c:\foo\bar""..\blah\*.cpp"

有一种简单的方法来获取绝对文件路径列表吗?例如

{ "c:\foo\blah\a.cpp", "c:\foo\blah\b.cpp" }

背景

有一个源代码树,其中任何目录都可以包含构建定义文件.此文件使用带通配符的相对路径来指定源文件列表.任务是为每个这些构建定义文件生成所有源文件的绝对路径列表.

.net c# wildcard relative-path path-combine

10
推荐指数
1
解决办法
8206
查看次数

"DataContextChanging"的事件?

我是WPF的新手,请原谅我,如果这个问题没有意义.是否有在数据上下文更改之前触发的事件?我想在切换数据上下文之前提交挂起的数据更改.

wpf datacontext

8
推荐指数
1
解决办法
1万
查看次数

.NET 中免注册 COM 互操作的确切步骤(在没有 regsvr32 的情况下调用复制的 COM dll)

我想向我的 .NET 应用程序添加免注册 COM 引用。免注册意味着用户无需将 COM 组件注册到他们的系统即可运行应用程序。

我找到了很多关于这个主题的文章(例如MSDN这个 S/O 问题等),但没有一篇包含具体步骤。这是我尝试过但没有奏效的方法:

  1. foo.dll本答案中所述,使用 mt.exe 为COM dll 生成清单(例如)。
  2. 添加foo.dllfoo.dll.manifest到我的应用程序作为“构建操作”=“内容”和“复制到输出目录”=“始终复制”。
  3. 添加对interop.foo.dll随附的引用foo.dll
  4. 使用此部分添加应用清单文件:

    <dependency>
      <dependentAssembly>
        <assemblyIdentity type="win32" name="foo" />
      </dependentAssembly>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 构建并运行。

有一个错误说应用程序配置不正确。在<assemblyIdentity>没有运气的情况下尝试了不同的值。

有人可以分享经验吗?谢谢。

com-interop regfreecom

5
推荐指数
1
解决办法
4874
查看次数

在 WPF DataGrid 中自定义 Ctrl+C 行为

我正在使用 WPFDataGrid来显示名称/值对。SelectionUnit设置为FullRow因为它看起来不错,但是,当用户选择一行并按Ctrl+时C,他确实想要复制值文本,而不是默认行为(名称和值的串联)。在寻找解决方案时,我发现了CopyingRowClipboardContentevent,但MSDN 页面没有有关如何使用它的信息。还是我应该捕获我PreviewKeyDown自己?

wpf datagrid copy-paste

5
推荐指数
1
解决办法
4270
查看次数

如何为dll中的自定义控件分配资源字典

我的MyControl.cs应用程序项目(.exe)中有一个WPF自定义控件,其样式位于资源字典中MyControlResources.xaml.此xaml app.xaml作为合并字典的一部分指定.一切正常.

现在我想将此自定义控件移动到应用程序引用的现有DLL项目中.有没有办法可以在DLL中创建资源字典"赋值"并使其对调用者透明,即应用程序项目可以像使用任何内置控件一样使用它,而不需要您了解有关资源字典的任何信息?

我读过关于创建一个新的自定义控件项目可以做到这一点,但它只是一个我不想为其创建新项目的控件.任何人都知道如何在现有的类库DLL中执行此操作?

wpf custom-controls resourcedictionary

5
推荐指数
1
解决办法
2834
查看次数

以AD群发送电子邮件

在.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组没有密码,我认为组别名甚至不算作用户名.

那么可以发送电子邮件作为组吗?

.net c# email smtp active-directory

5
推荐指数
1
解决办法
5482
查看次数