小编Gig*_*igi的帖子

以编程方式设置按钮平面样式

当某些条件发生时,我想以编程方式给按钮一个平面样式.

这个问题展示了我如何以编程方式为控件设置样式,已经在XAML中定义了它.

此问题表明已存在平面按钮样式,因此无需在XAML中创建一个.

ToolBar.ButtonStyleKey返回一个ResourceKey,并且我的窗口中没有定义相应的样式(它在ToolBar中).如何在代码中使用它来以编程方式设置样式?

c# wpf styles

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

WPF MessageBox不等待结果[WPF NotifyIcon]

我正在使用WPF NotifyIcon来创建系统托盘服务.当我显示一个消息框时,它会显示半秒钟然后立即消失而不等待输入.

之前发生过这种情况,通常的建议是使用接受Window参数的重载.但是,作为系统托盘服务,没有窗口可用作父级,并且null不会在其位置接受.

有没有办法让MessageBox等待用户输入自己创建一个自定义MessageBox窗口?

.net c# wpf messagebox notifyicon

7
推荐指数
2
解决办法
3231
查看次数

StackExchange.Redis中是否提供原始命令?

StackExchange.Redis中是否有任何功能允许您直接执行原始命令?就像我提供一个带有命令的字符串,例如(下面的假设代码):

conn.Send("ZADD mysortedset 1 john");
Run Code Online (Sandbox Code Playgroud)

我知道几乎每个命令都有可用的方法ZADD,但这不是重点.

c# redis stackexchange.redis

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

为什么我们需要在ASP .NET 5 wwwroot中使用web.config?

在ASP .NET 5中,配置正在发生巨大变化.我们不再有web.config文件了.相反,我们可以使用JSON和其他选项,具体取决于我们在Startup课堂上设置的方式.不同的是web.config,此类配置通常不会进入wwwroot,并且客户端无法访问它.

然而,在ASP .NET 5项目模板中,有一个包含以下内容的web.config文件wwwroot:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在我看来,这可能是托管服务器在运行时寻找的东西,独立于应用程序配置.

任何人都可以阐明为什么需要它,以及它是如何工作的?

web-config asp.net-core

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

不推荐使用Rx Scheduler选项

我正在尝试使用Reactive Extensions(Rx).这是我做的一个小例子:

        var query = from number in Enumerable.Range(1, 20) select number;
        var obs = query.ToObservable(Scheduler.ThreadPool);

        obs.Subscribe(Console.WriteLine);

        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

当我使用Scheduler.ThreadPool,Scheduler.NewThread等,我得到这个警告:

System.Reactive.Concurrency.Scheduler.ThreadPool'已过时:'由于重构API表面和消除特定于平台的依赖项,不再支持此属性.考虑使用Scheduler.Default获取平台最合适的基于池的调度程序.要访问特定的基于池的调度程序,请为目标平台添加对System.Reactive.PlatformServices程序集的引用,并在System.Reactive.Concurrency命名空间中使用相应的调度程序.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=260866.

如果我按照警告的说明操作,我仍会收到警告.如果我想使用以前通过Scheduler类提供的各种选项,我期望准确地用于调度程序的是什么?

c# scheduler system.reactive

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

TreeViewItem扩展时调用命令

听起来很简单?我有一个TreeView,我希望在扩展其中一个节点时发生一些事情.我正在使用MVVM,因此'something'是ViewModel中的命令.

好吧,我发现它毕竟不是那么简单.我环顾四周,尝试了一些事情.例如,使用MVVM Light的EventToCommand:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="TreeViewItem.Expanded">
        <cmd:EventToCommand Command="{Binding Path=FolderNodeToggledCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

此代码(基于)不起作用(没有触发;命令绑定在ViewModel中,但在展开节点时永远不会触发相应的方法).我也试过替换cmd:EventToCommand,i:InvokeCommandAction结果是一样的.第二个链接中的"解决方案"显然有点过分,我不想更改ToggleButton,因为我想使用具有自己的ToggleButton 的WPF TreeView WinForms Style.第二个链接中的第二个答案表明我可能正在尝试在TreeView上使用不存在的事件.

另一种可能的解决方案是绑定TreeViewItem的IsExpanded属性.但是我想将我绑定的对象保持为干净的DTO并在ViewModel中执行操作,而不是在绑定的对象中执行.

那么当TreeViewItem扩展时,如何在ViewModel中调用命令呢?

c# wpf treeview mvvm treeviewitem

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

重新加载RTF后未检测到下划线

我正在尝试使用基本格式的RichTextBox为我的新测试笔记软件Lilly Notes工作.Brian Lagunas关于这个问题的文章让我朝着正确的方向前进,但是我遇到了一些问题.如果单击带下划线的文本,则会按下"下划线"按钮,因此正在识别状态.但是,如果我将其序列化为RTF然后将其反序列化为RichTextBox,则不会检测到它.由于Lilly Notes中的代码在这里展示并不容易,我创建了一个SSCCE来演示这个问题.

首先,MainWindow.xaml:

<Window x:Class="WpfRichTextBoxUnderline.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Height="350"
        Width="525">
    <DockPanel LastChildFill="True">
        <Button Name="SaveAndReloadButton"
                Content="Save and Reload"
                DockPanel.Dock="Bottom"
                Click="SaveAndReloadButton_Click" />
        <ToggleButton Name="UnderlineButton"
                      DockPanel.Dock="Top"
                      Width="20"
                      Command="{x:Static EditingCommands.ToggleUnderline}"
                      CommandTarget="{Binding ElementName=RichText}">
            <ToggleButton.Content>
                <TextBlock Text="U"
                           TextDecorations="Underline" />
            </ToggleButton.Content>
        </ToggleButton>
        <RichTextBox Name="RichText"
                     SelectionChanged="RichTextBox_SelectionChanged" />
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

这就是它的样子:

在此输入图像描述

在代码隐藏中,我有代码来检测选择更改时的格式状态,并相应地更新下划线按钮的状态.这与Brian Lagunas的方法没什么不同.

private void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e)
{
    if (this.RichText.Selection != null)
    {
        object currentValue = this.RichText.Selection.GetPropertyValue(Inline.TextDecorationsProperty);
        this.UnderlineButton.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != …
Run Code Online (Sandbox Code Playgroud)

c# wpf serialization rtf richtextbox

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

Redis 需要多少空闲内存才能运行?

在这个阶段,我很确定 Redis 在操作系统上需要一定数量的空闲内存才能运行。在过去的几周里,我看到 Redis (Linux) 内存不足,但仍有几 GB 的可用内存,而在 Windows 上,当您在系统上使用大量内存时,它拒绝启动,但仍然有一堆空闲,如下面的屏幕截图所示。

在此处输入图片说明

Windows 上的错误提示了为什么会发生这种情况(虽然我不假设它在 Linux 上是一样的)。但是,我的问题更笼统。Redis 需要多少空闲内存才能运行?

memory redis

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

调试时看不到值

我正在使用Visual Studio 2015,当我遇到断点时,我无法获得有关变量值的任何信息.

这种情况突然发生,因为它曾经工作到昨天.

我尝试了一些方法,包括重置所有用户设置,删除*.user文件,重新启动Visual Studio,甚至重新启动Windows.

我还能尝试什么?

更新:我写了一篇关于这个问题以及如何重现它的博客文章.

debugging visual-studio-2015

6
推荐指数
2
解决办法
6581
查看次数

如何将任何C#对象转换为ExpandoObject?

我已经阅读了很多关于如何使用ExpandoObject通过添加属性从头开始动态创建对象的内容,但我还没有发现你是如何从已经拥有的非动态C#对象开始做同样的事情的.

例如,我有这个琐碎的课程:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string Telephone { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想将它转换为ExpandoObject,以便我可以根据已经的内容添加或删除属性,而不是从头开始重建相同的东西.这可能吗?

编辑:标记为重复的问题显然不是这个问题的重复.

c# dynamic expandoobject

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