小编Run*_*sen的帖子

调整WPF列表或网格中的字体大小以正确使用空间

我有一个应用程序,显示体育联盟的排名表.这些表基本上是不同列的网格,代表每个团队的统计数据,如比赛,赢,输,得分和得分等.因此,联赛表有一个有趣的属性:对于给定的比赛,我们总是有相同的数量行(代表团队).由于WPF控件是无形的,我可能直接使用ListBox,ListView,ItemsControl,甚至是DataGrid.不应该那么重要.

但是,我想要一些我尚未实现的东西:给定表大小(实际上,窗口的大小),所有团队应始终可见(无垂直滚动),所有统计列(如由用户选择)应该是可见的,并且字体大小应该反映这一点,以便它尽可能大,而没有任何列变得太大而内容不适合.

我可以轻松地使用UniformGrid来实现无垂直滚动的部分.但是,调整字体大小似乎并不那么容易.

当然还有ViewBox,它允许每个表格单元格的内容单独确定其大小,但这可能会导致丑陋,因为最终会出现一堆不同大小的单元格.

我不希望得到一个简单的答案,但如果可能的话,我很乐意听到它.综上所述:

  1. 表应该使用窗口调整大小,同时始终显示没有滚动条的所有数据.

  2. 字体大小应设置为最大可能的大小,允许每行的每列显示其所有内容.

  3. 所有列的大小应尽可能小,以允许所有内容可见,除了一列执行"*-sizing"以占用剩余空间.

那么......有什么聪明的方法吗?:)

wpf datagrid listview listbox

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

ReactiveUI与ICollectionView

我有一个.Net 4.5应用程序正在转向基于WPF的RxUI(在撰写本文时保持最新,6.0.3).我有一个文本字段,应该作为一个过滤器字段,具有相当常见的油门等东西,这是首先发生反应的部分原因.

这是我班级的相关部分.

public class PacketListViewModel : ReactiveObject
{
    private readonly ReactiveList<PacketViewModel> _packets;
    private PacketViewModel _selectedPacket;
    private readonly ICollectionView _packetView;
    private string _filterText;

    /// <summary>
    /// Gets the collection of packets represented by this object
    /// </summary>
    public ICollectionView Packets 
    {
        get
        {
            if (_packets.Count == 0)
                RebuildPacketCollection();
            return _packetView;
        }
    }

    public string FilterText
    {
        get { return _filterText; }
        set { this.RaiseAndSetIfChanged(ref _filterText, value); }
    }

    public PacketViewModel SelectedPacket
    {
        get { return _selectedPacket; }
        set { this.RaiseAndSetIfChanged(ref …
Run Code Online (Sandbox Code Playgroud)

c# wpf xunit.net system.reactive reactiveui

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

在 .Net 4.7.2 中导入 AngleSharp 时绑定重定向以某种方式尝试将 NetStandard 2 作为 dll 引入

我有一个旧版应用程序在旧的 Windows 2008 R2 服务器上运行。该应用程序经历了许多 .Net 版本,目前在 4.7.2 上。多年来,它一直稳定如磐石,虽然有迁移计划以摆脱旧的物理服务器,但它必须存活一段时间。

一项新功能表明需要一些 HTML 抓取。我为 AngleSharp v0.12.0 添加了 NuGet 包,经过单元测试,在我的 Win10 开发机器上一切正常。使用 AngleSharp 的新类很简单。

所以我部署到 prod 服务器,包括对 app.config 的更改;

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
Run Code Online (Sandbox Code Playgroud)

这些是我可以从旧版本中识别出的唯一更改。

当我在生产中运行该应用程序时,它崩溃了。

System.IO.FileLoadException: Could not load file or assembly 'System.Text.Encoding.CodePages, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the …
Run Code Online (Sandbox Code Playgroud)

c# assembly-binding-redirect anglesharp .net-4.7.2

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

使用WPF(需要STAThread)和不能与STAThread一起使用的API

我正在编写一个WPF应用程序,它具有对具有简单要求的API的可选依赖性; 它必须在没有STAThread属性的线程上初始化/使用.当然,WPF需要STA才能让一切变得简单.

在这种情况下,无论如何都需要WPF.仅当用户选择在应用程序中启用此功能时,才需要此第三方API.这意味着一旦调用其他API,WPF应用程序就已经在运行.

如果你没有使用[STAThread]装饰主方法,它是否自动成为MTA线程?在这种情况下,这是否意味着我可以创建一个新的MTA线程并使用其他API?

如果这样可行,那么我猜这个API中的任何事件都可以使用Dispatcher与WPF应用程序通信(用于引发需要在UI中显示的事件等).但是,有一种简单的方法可以让我的WPF应用程序在MTA线程上"调用"功能来进行API调用吗?

在MTA中我猜每个线程应该能够使用状态,但我想我的STA线程(WPF应用程序)不能只是"进入"MTA线程并执行API调用?

这里有很多混淆的可能性,我会喜欢关于如何设计这样的东西的一些输入!

谢谢!

[编辑7月8日]

哦,我在上面有一些概念混淆了.线程模型当然是为PROCESS而不是为每个线程设置的,并且该第三方API不能与STA进程一起使用.

目前,我看到这个混乱的唯一方法是编写一个与此API通信的服务,然后使用命名管道与此服务进行通信.这根本不是一件小事,一个丑陋丑陋的解决方法,但第三方API不在我的控制之下.这就是人生.:|

.net wpf multithreading

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

使用WPF工具包DatePicker作为用作项目源的ObjectDataProvider的参数

这个让我打败了;

我有一个WPF窗口,其中有两个(对于这种情况很重要)控件,都来自CodePlex提供的WPF工具包; DatePicker和DataGrid.

此窗口的DataContext设置为CLR对象,该对象具有所需的所有信息.此CLR对象具有大量数据,以及一个名为GetDataForDate(DateTime date)的方法,该方法决定我们将查看数据的日期.

我如何创建一个DataDataProvider(我假设它是正确的解决方案)datagrid可以绑定到哪个,它提供对GetDataForDate()返回的数据的访问,调用DatePicker的选定日期作为参数?

换句话说,我希望用户使用日期选择器来选择日期,并且每当更改日期以反映正确的数据时,网格应自动更新.

我需要做什么样的黑魔法才能实现这样的目标 - 我猜这应该是一个相对常见的数据绑定场景?

提前致谢!

data-binding wpf

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

使用MSBuild使用TeamCity运行XUnit测试

我试图让TeamCity在构建过程中运行XUnit测试.所以我创建了一个单独的文件 - MyProject.msbuild - 与.sln文件位于同一个文件夹中,如下所示:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\..\bin\xunit.net\xunit.runner.msbuild.dll" TaskName="Xunit.Runner.MSBuild.xunit"
             />

    <Target Name="Build">
      <MSBuild Projects="MyProject.sln" Targets="Build" Properties="Configuration=Release">
        <xunit Assembly="MyProject.Utility.Tests\bin\Release\MyProject.Utility.Tests.dll" />
      </MSBuild>
    </Target>

</Project>
Run Code Online (Sandbox Code Playgroud)

但是,无论我做什么,VS2010都讨厌我在元素中使用元素.如果我在文件上运行MSBuild,它会告诉我更多一点:

P:\MyProject\src>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe MyProject.msbuild /tv:4.0 /v:d
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.225]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 08.11.2011 21:08:46.
Project "P:\MyProject\src\MyProject.msbuild" on node 1 (default targets).
Building with tools version "4.0".
P:\MyProject\src\MyProject.msbuild(8,9): error MSB4067: The element <xunit> beneath element <MSBuild> is unrecognized.
Done Building Project "P:\MyProject\src\MyProject.msbuild" (default …
Run Code Online (Sandbox Code Playgroud)

msbuild xunit.net msbuild-4.0

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

使用 .net 正则表达式提取主机/端口组合 - 端口部分可选

假设我想从如下字符串中提取主机名和端口号:

stackoverflow.com:443

这很容易。我可以做这样的事情:

(?<host>.*):(?<port>\d*)

我不担心协议方案或有效的主机名/IP 地址或 tcp/udp 端口​​,这对我的请求并不重要。

然而,我还需要支持一种超出我对正则表达式知识的扭曲 - 不带端口的主机名:

stackoverflow.com

我想为此使用单个正则表达式,并且我想使用命名捕获组,以便主机组始终存在于正匹配中,而端口组当且仅当我们有一个冒号后跟多个数字。

我尝试从我对它的微弱理解中进行积极的回顾:

(?<host>.*)(?<=:)(?<port>\d*)

这很接近,但冒号 (:) 包含在主机捕获的末尾。所以我尝试更改主机以包含除冒号之外的任何内容,如下所示:

(?<host>[^:]*)(?<=:)(?<port>\d*)

这给了我一个空的主机捕获。

有关如何实现此目的的任何建议,即使冒号和端口号可选,但如果它们存在,请包括端口号捕获并使冒号“消失”?

编辑:我收到的所有四个答案对我来说都很有效,但请注意其中一些答案的评论。我接受了 sln 的答案,因为它的布局和正则表达式结构的解释都很好。感谢所有回复!

.net c# regex

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

是否可以直接在NHibernate中设置引用的外键?

有一个项目从特定系统收集数据作为XML文件(这些文件作为Web请求进入),将其转换为实体模型,并将其填充到数据库中进行报告.

该项目使用以下软件(与此问题相关):

  • C#4.0/.Net 4
  • NHibernate 3.0(最新的NuGet版本)
  • 流利的NHibernate(与NH 3一起使用的那个)

假设我有这样的实体(简化):

public class Incident : Entity
{
        public virtual string OriginatorSite { get; set; }
        public virtual string DestinationSite { get; set; }
        public virtual IncidentType IncidentType { get; set; }
        public virtual TimeSpan TotalWaitTime { get; set; }
        public virtual TimeSpan TotalActionTime { get; set; }
        public virtual DateTime RegisterTime { get; set; }
        public virtual DateTime CloseTime { get; set; }
        public virtual DateDimension DateDimension { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate dimensional-modeling

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