小编RMK*_*RMK的帖子

如何在WPF中创建一个允许鼠标事件通过的半透明窗口

我试图在Adobe Lightroom(http://www.youtube.com/watch?v=87hNd3vaENE)中创建类似于Lights out/lights dim功能的效果,但在WPF中除外.

我尝试的是在现有窗口的顶部创建另一个窗口,使其透明并在其上放置半透明的Path几何体.但我希望鼠标事件能够通过这个半透明窗口(在下面的窗口上).

这是我所拥有的简化版本:

<Window x:Class="LightsOut.MaskWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    AllowsTransparency="True" 
    WindowStyle="None"
    ShowInTaskbar="False"
    Topmost="True" 
    Background="Transparent">

<Grid>

    <Button HorizontalAlignment="Left" Height="20" Width="60">click</Button>

    <Path IsHitTestVisible="False" Stroke="Black" Fill="Black" Opacity="0.3">

        <Path.Data>
            <RectangleGeometry Rect="0,0,1000,1000 "/>
        </Path.Data>
    </Path>             

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

窗口是完全透明的,因此在路径未覆盖的位置,鼠标事件直接通过.到现在为止还挺好.路径对象上的IsHitTestvisible设置为false.因此鼠标事件将通过它传递到同一表单上的其他控件(即,您可以单击Button,因为它位于同一表单上).

但是鼠标事件不会通过Path对象传递到它下面的窗口.

有任何想法吗?还是更好的方法来解决这个问题?

谢谢.

wpf transparency

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

将app_offline与webdeploy一起使用的最佳做法

当我部署我的网站时,我需要:

  • 使网站脱机.

  • 运行sql来更新数据库.

  • 更新网站.

  • 将网站重新上线

我想尽可能多地编写脚本,而不必去服务器并进行手动更改.

我目前正在使用WebDeploy来推动我的网站更改.它工作得很好,我不必确切知道我的网站在服务器上的安装位置.

那么放置/删除app_offline文件的最佳方法是什么?如果已经看到一些使用msbuild脚本重命名现有文件(app_offline.htm_)的解决方案.但似乎这需要我知道这个文件的位置.

有没有办法通过web_deploy来做到这一点?

谢谢

app-offline.htm webdeploy

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

使用CsvHelper可以将空格转换为可空吗?

我有一些非常蹩脚的Csv文件我需要解析.我正在使用CsvHelper,它工作得很棒.除了我有一些行有空格的地方,我有一个双倍的正常.

文件:

文本,SomeDouble,MoreText

"好",1.23 "好"

"坏","坏"

如果我尝试将其映射到

public class Test
{
  [CsvField(Name = "Text")]
  public string Text { get; set; }

  [CsvField(Name = "SomeDouble")]
  public double? SomeDouble{ get; set; }

  [CsvField(Name = "MoreText")]
  public string MoreText{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我得到这样的错误:

CsvHelper.CsvReaderException:尝试读取类型记录时发生错误

行:'2'(从1开始)

场指数:'1'(基于0)

字段名称:'SomeDouble'

场地价值:''

System.Exception:不是Double的有效值.---> System.FormatException:输入字符串的格式不正确.
处于System.ComponentModel.DoubleConverter.FromString(String value,NumberFormatInfo formatInfo)的System.Number.ParseDouble(String value,NumberStyles options,NumberFormatInfo numfmt),位于System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value) - - 内部异常堆栈跟踪的结束---在lambda_method的System.ComponentModel.NullableConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)处的System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)处闭包,ICsvReader)在CsvHelper.CsvReader.d__0`1.MoveNext()

在我看来,我的选择是创建一个自定义解析器,或将我的值映射到字符串属性并在那里进行解析.

还有其他选择吗?

如果我可以配置我想将空格视为空,那将是很好的.

根据要求,这是一个重现问题的代码示例

 static class Program
    {
        public class Test
        {
            [CsvField(Name = …
Run Code Online (Sandbox Code Playgroud)

.net c# csv parsing csvhelper

8
推荐指数
2
解决办法
5549
查看次数

使用 Puma 时初始化 BigDecimal 限制的正确位置在哪里

我有一个 Rails 初始化程序,它设置了 Big Decimal 的限制

BigDecimal.limit(20)
Run Code Online (Sandbox Code Playgroud)

这被执行并且似乎正确设置了限制。

但是当 Web 请求进来时(我使用的是 Puma),处理请求的线程似乎没有设置限制。限制设置为 0,这是默认值。

还有其他地方我应该设置限制吗?

如果你想重现:

创建一个全新的 rails 应用程序并添加一个设置限制的初始化程序

BigDecimal.limit(20)
puts "*** Set #{BigDecimal.limit}"
Run Code Online (Sandbox Code Playgroud)

在您的应用程序控制器中添加

before_action :check_big_decimal

def check_big_decimal
  puts "***request #{BigDecimal.limit}"
end
Run Code Online (Sandbox Code Playgroud)

启动您的服务器,刷新页面并发出请求

您应该看到它设置为 20,但是当请求进来时它又回到 0。

ruby-on-rails puma

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