我正在使用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) 我在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?
我想从我的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
我有一个简单的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) 我刚刚增加了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) 我无法删除已上传到本地 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 服务器上进行任何设置才能允许删除包,或者我的命令语法是否不正确?
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)
上面的代码分别打印true和false。这是可以理解的,但是为什么false当我们使用==.
但是,当使用<=(小于或等于)时,为什么是答案true?
SELECT *
FROM REVIEW
WHERE REVIEWERID =5 AND APPRAISEECONFIRMYN='Y' AND HRCONFIRMYN = NULL
Run Code Online (Sandbox Code Playgroud)
这样的2'AND'条件是允许的吗?我没有得到正确的输出.数据库中有2条记录符合上述条件.当我删除最后一个条件'HRCONFIRMYN = NULL'并执行时,我得到正确的输出.
怎么解决这个问题?我需要检查所有3个条件,同时搜索记录.
我有一个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)"
我有一个 .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) 我在wpf应用程序中使用一个标题控件,因为我使用的是Grid,在该网格中我将List box放在一些按钮和文本框中.我想让文本框可滚动.你能帮我解决一下吗?
当我在 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)时,发布或修补程序失败
我尝试获取项目的当前目录路径。我试过:
System.IO.Directory.GetDirectoryRoot();
环境.当前目录;
System.IO.Path.GetFullPath(".\");
在所有选项中我得到:
C:\Program Files (x86)\IIS Express\
而不是项目路径。
有没有人有办法解决吗?
c# ×4
wpf ×3
nuget ×2
asp.net-core ×1
azure-devops ×1
data-binding ×1
equality ×1
git ×1
git-flow ×1
inequality ×1
java ×1
mediatr ×1
mvvm ×1
nuget-server ×1
pdf ×1
powershell ×1
pull-request ×1
scroll ×1
sql ×1
textbox ×1
wcf ×1
wcf-binding ×1
wpfdatagrid ×1
wpftoolkit ×1
wrapper ×1
xaml ×1