小编ope*_*hac的帖子

在PropertyGrid控件中显示只读属性

我正在使用WPF扩展工具包来显示Team对象的属性.现在其中一个属性是人物集合.没问题,我得到一个很好的下拉,当我点击时,向我显示每个人的姓名和年龄.

在此输入图像描述

现在的问题是我实际上并不希望将我的Collection公开为public.但是,只要我将其setter设为私有,就会禁用该属性,以防止用户看到Person集合和人员详细信息:

在此输入图像描述

当它的setter是私有的时候我该如何显示我的Person Collection?我可以使用XAML模板执行此操作吗?如果是这样的话?我正在使用MVVM,因此我不想在代码中添加任何内容.

更新

好的,所以@tencntraze的解决方案让我大部分都在那里 - 谢谢.但是它对于对象的集合不起作用,这是我在我的情况下得到的.此外,它还可以简化为使用CollectionControlDialog而不是下面实现的自定义ReadOnlyCollectionViewer.

XAML

<UserControl x:Class="DevExpressTreeList.ReadOnlyCollectionEditor"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Name="MyUserControl"
             >
    <DockPanel>
        <Button Click="Button_OnClick" DockPanel.Dock="Right">
            <Label Content="?" Padding="2,0,2,0" />
        </Button>
        <Label Name="CollectionLabel" Content="(Collection)" Padding="2,2,2,0" />
    </DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

public partial class ReadOnlyCollectionEditor : UserControl, ITypeEditor
{
    public ReadOnlyCollectionEditor()
    {
        InitializeComponent();
    }

    // Use typeof(object) to allow for any Collection<T>
    public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
        "Value", typeof(object), typeof(ReadOnlyCollectionEditor), new PropertyMetadata(default(object)));

    public object Value
    {
        // We are now using …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml mvvm wpftoolkit

7
推荐指数
1
解决办法
5720
查看次数

代码分析 - CA1704:纠正'Ps'的拼写

我在VS2010的代码分析中收到以下警告

CA1704:Microsoft.Naming:在成员名称"MyClass.PsCalculatedAmount"中更正"Ps"的拼写,或者如果它表示任何类型的匈牙利表示法,则将其完全删除.

现在我的代码库'Ps'意味着'每股'并且被大量使用,所以我想允许它作为可接受的单词/首字母缩略词.

我尝试将其添加到我的CustomDictionary.xml下

<Words>
    <Recognized>
        <Word>ps</Word>
...
    <Recognized>
<Words>
Run Code Online (Sandbox Code Playgroud)

并尝试过

<Acronyms>
    <CasingExceptions>
        <Acronym>Ps</Acronym>
    ...
    <CasingExceptions>
<Acronyms>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到警告.

有什么我应该采取不同的做法吗?

我注意到FXCop中有一个关于此问题的错误现已修复; http://social.msdn.microsoft.com/Forums/en/vstscode/thread/54e8793c-e821-49b2-80db-ea1420acf1e6

在我正在使用的Visual Studio版本中是否仍然存在此错误:V10.0.30319?

code-analysis suppress-warnings visual-studio

6
推荐指数
1
解决办法
7121
查看次数

显示Reporting Services中的PDF

我想从我的WinForms应用程序中显示从Reporting Services生成的PDF.

我尝试了以下方法:

Uri uri = new Uri("http://myReportServer?MyReport&rs%3aCommand=Render&rs:Format=pdf");
System.Diagnostics.Process.Start(uri.ToString());
Run Code Online (Sandbox Code Playgroud)

这会启动浏览器,然后提示我打开或保存此文件.

理想情况下,我想在浏览器或PDF查看器中仅显示该文件.问题是我必须打开浏览器,然后打开用户不想要的PDF查看器.

有没有一种简单的方法只使用URL来做到这一点?

我的另一种选择是编写一些看起来很简单的C#代码.这里有一些例子:

http://geekswithblogs.net/bsherwin/archive/2007/04/29/112094.aspx

和这里:

http://www.codeproject.com/KB/reporting-services/PDFUsingSQLRepServices.aspx

c# pdf reporting-services

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

将DataGridComboBoxColumn绑定到枚举

我有一个简单的DataGrid,我希望用户添加一些行.但是我希望其中一个列是一个ComboBox,它的值取自枚举.

在我的XAML中最简单的方法是什么?

我试过跟随,但我收到错误"双向绑定需要Path或XPath"

<Window.Resources>
    <ObjectDataProvider x:Key="myEnumData"
                MethodName="GetValues" 
                ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="local:MyEnum" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

...

   <DataGrid.Columns>
        <DataGridComboBoxColumn Header="MyHeader" DisplayMemberPath="EnumValue" 
            SelectedItemBinding="{Binding Source={StaticResource myEnumData}}">
        </DataGridComboBoxColumn>
    </DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

data-binding wpf wpfdatagrid

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

已超出最大名称表字符计数配额(16384)

我刚刚增加了ServiceContract中的方法数量.当我在Visual Studio中更新服务引用时,我收到消息:

元数据包含无法解析的引用:'net.tcp://xxxxx.com:8002/DataQueryService/mex'.

XML文档中存在错误.

读取XML数据时已超出最大名称字符集计数配额(16384).nametable是用于存储XML处理期间遇到的字符串的数据结构 - 具有非重复元素名称,属性名称和属性值的长XML文档可能会触发此配额.通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性,可以增加此配额.

原始服务器端配置是:

 <services>
      <service behaviorConfiguration="XXXXX.DataQueryService.ServiceBehavior" name="XXXXX.DataQueryService.QueryService">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://xxxxx.com:8002/DataQueryService" />
          </baseAddresses>
        </host>
        <endpoint name="MexEndpoint" address="mex" binding="customBinding" bindingConfiguration="unsecureTcpMex" contract="IMetadataExchange" />
    </service>
</services>

<bindings>
    <customBinding>
        <binding name="unsecureTcpMex">
            <tcpTransport portSharingEnabled="True" />
        </binding>
    </customBinding>    
</bindings>
Run Code Online (Sandbox Code Playgroud)

我修改为:

<bindings>
    <customBinding>
        <binding name="unsecureTcpMex">
            <textMessageEncoding>
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </textMessageEncoding>
            <tcpTransport portSharingEnabled="True" maxReceivedMessageSize="2147483647"  />
        </binding>
    </customBinding>    
</bindings>
Run Code Online (Sandbox Code Playgroud)

我需要对配置进行哪些其他更改才能使其正常工作?

更新 以下@Chris的建议我尝试更新SVCUtil的配置文件.我为我的端点添加了一个名称,以便它匹配(上面更新).SvcUtil.config现在如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="unsecureTcpMex">
                    <textMessageEncoding>
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </textMessageEncoding> …
Run Code Online (Sandbox Code Playgroud)

configuration wcf wcf-binding

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

无法删除服务器上的 NuGet 包

我无法删除已上传到本地 NuGet 服务器的 NuGet 包,NuGet 服务器是 v2.8.50320.36,命令行 NuGet.exe 是 2.0.6。

当我使用以下命令时:

nuget delete Newtonsoft.Json 6.0.3 myapikey -source http://nuget.mycompany.com/ -NonInteractive -verbosity detailed
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

Deleting Newtonsoft.Json 6.0.3 from the 'http://nuget.mycompany.com/'.
Failed to process request. 'Internal Server Error'. 
The remote server returned an error: (500) Internal Server Error..
Run Code Online (Sandbox Code Playgroud)

但是,我将包推送到服务器上没有问题(我已经检查过它确实在那里),这是我用来推送它的命令。

nuget push "C:\Temp\Newtonsoft.Json.6.0.3.nupkg" myapikey -source http://nuget.mycompany.com/ -verbosity detailed
Run Code Online (Sandbox Code Playgroud)

我是否需要在 NuGet 服务器上进行任何设置才能允许删除包,或者我的命令语法是否不正确?

nuget nuget-package nuget-server

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

Java Wrapper 的比较

public static void main(String[] args) {    
    System.out.println((Integer.valueOf("5000") <= Integer.valueOf("5000")));
    System.out.println((Integer.valueOf("5000") == Integer.valueOf("5000")));       
}
Run Code Online (Sandbox Code Playgroud)

上面的代码分别打印truefalse。这是可以理解的,但是为什么false当我们使用==.

但是,当使用<=(小于或等于)时,为什么是答案true

java inequality equality wrapper primitive-types

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

SQL'选择'查询有3个条件

SELECT * 
FROM REVIEW 
WHERE REVIEWERID =5 AND APPRAISEECONFIRMYN='Y' AND HRCONFIRMYN = NULL
Run Code Online (Sandbox Code Playgroud)

这样的2'AND'条件是允许的吗?我没有得到正确的输出.数据库中有2条记录符合上述条件.当我删除最后一个条件'HRCONFIRMYN = NULL'并执行时,我得到正确的输出.

怎么解决这个问题?我需要检查所有3个条件,同时搜索记录.

sql

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

添加post build事件而不覆盖现有事件

我有一个Powershell脚本(由我的NuGet包运行),它将一个post build事件添加到用户的Visual Studio项目中.

$project.Properties | where { $_.Name -eq "PostBuildEvent" } | foreach { $_.Value = "xcopy `"`$(ProjectDir)MyFolder`" `"`$(OutDir)`"" }
Run Code Online (Sandbox Code Playgroud)

不幸的是,它目前覆盖了现有的post build事件.如果尚未存在构建事件,我如何修改Powershell脚本以附加它?

我之前从未使用过Powershell,但我尝试将其添加到foreach中,但这不起作用:

$_.Value = "$_.Value`nxcopy `"`$(ProjectDir)MyFolder`" `"`$(OutDir)`""
Run Code Online (Sandbox Code Playgroud)

只是给出:

System .__ ComObject.Value xcopy"$(ProjectDir)MyFolder""$(OutDir)"

powershell post-build-event visual-studio nuget

3
推荐指数
1
解决办法
823
查看次数

MediatR 错误:向容器注册您的处理程序

我有一个 .Net Core 应用程序,我使用 .AddMediatR 扩展来注册命令和处理程序的程序集

在Startup.cs的ConfigureServices中,我使用了官方包MediatR.Extensions.Microsoft.DependencyInjection中的扩展方法,并带有以下参数:

启动.cs

 services.AddBLL();
Run Code Online (Sandbox Code Playgroud)

依赖注入.cs

public static IServiceCollection AddBLL(this IServiceCollection services)
    {
        services.AddAutoMapper(Assembly.GetExecutingAssembly());
        services.AddMediatR(Assembly.GetExecutingAssembly());
        services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPerformanceBehaviour<,>));
        services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestValidationBehavior<,>));

        return services;
    }
Run Code Online (Sandbox Code Playgroud)

命令处理程序类如下:ListEpostaHesaplariHandler.cs

public class ListEpostaHesaplariRequest : IRequest<ResultDataDto<List<ListEpostaHesaplariDto>>>
{
    public FiltreEpostaHesaplariDto Model { get; set; }
}

public class ListEpostaHesaplariHandler : IRequestHandler<ListEpostaHesaplariRequest, ResultDataDto<List<ListEpostaHesaplariDto>>>
{
    private readonly IBaseDbContext _context;
    private readonly IMapper _mapper;

    public ListEpostaHesaplariHandler(IBaseDbContext context, IMapper mapper)
    {
        _context = context;
        _mapper = mapper;
    }

    public async Task<ResultDataDto<List<ListEpostaHesaplariDto>>> Handle(ListEpostaHesaplariRequest request, CancellationToken cancellationToken)
    {
        await Task.Delay(1);

        var …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection mediatr asp.net-core

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

如何在WPF中使TextBox可滚动

我在wpf应用程序中使用一个标题控件,因为我使用的是Grid,在该网格中我将List box放在一些按钮和文本框中.我想让文本框可滚动.你能帮我解决一下吗?

wpf scroll textbox

2
推荐指数
1
解决办法
1992
查看次数

如何在 AzureDevOps 存储库中使用主和开发上的 PR 分支策略实现/设置 GitFlow?

当我在 master 和开发分支上有拉取请求分支策略时,如何在 Azure Repos 上实现 Git Flow?我很想让它发挥作用,但我不知道最佳实践。我目前在 Azure Git 存储库上设置了 gitflow,但在 master 上有 PR 分支策略。如果由于没有创建 PR 而推送到 master 失败,我该如何完成发布或修补程序分支。同样,如果我的开发分支在 AzureDevOps 存储库中有 PR 分支策略,我无法使用“git flow feature ...finish”“完成”我的功能,因为推送开发分支会失败?

我已经尝试过在开发(用于完成功能)和主控(用于发布合并和/或修补程序合并)上没有 PR 分支策略。

我试图查阅 AzureDevOps 的分支策略指南,但它没有提及 GitFlow https://learn.microsoft.com/en-us/azure/devops/repos/git/git-branching-guidance?view=azure -devops#管理发布

该指南更直接地针对新功能从“master”创建功能分支并与 PR 合并,然后对于版本,它建议您从 master 创建发布和修补程序分支,这些分支永远不会合并回来。

预期:能够完成功能并通过 PR 合并回开发 能够同时完成发布和修补程序并合并回 master 并通过 PR 进行开发。

实际:完成一个功能。尝试合并到具有 PR 分支策略的任何分支(master、develop)时,发布或修补程序失败

git git-flow pull-request azure-devops

2
推荐指数
1
解决办法
3539
查看次数

C# - 获取项目路径,路径中没有 bin 文件夹

我尝试获取项目的当前目录路径。我试过:

  1. System.IO.Directory.GetDirectoryRoot();

  2. 环境.当前目录;

  3. System.IO.Path.GetFullPath(".\");

在所有选项中我得到:

C:\Program Files (x86)\IIS Express\

而不是项目路径。

有没有人有办法解决吗?

c#

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