小编Ben*_*ell的帖子

根据ReSharper,C#是可空类型的运算符,总是为false

我正在尝试将一个转换object为一个bool类型,并希望转换boolNullable<bool>类型.我还想确保在可能的情况下进行适当的演员表演.所以我有以下代码:

if (value is bool)
{
    boolValue = (bool) value;
}
else if (value is bool? && ((bool?)value).HasValue)
{
    boolValue = ((bool?) value).Value;
}
else
{
    throw new ArgumentException("Value must be a boolean type");
}
Run Code Online (Sandbox Code Playgroud)

ReSharper 2016告诉我value is bool?在if语句堆栈中总会评估为false.这是为什么?这意味着Nullable<bool>不会继承object(不可能)或value is bool将会捕获bool?.

ReSharper 2016也有可能出现错误; 我看到实现System.Windows.Controls.BooleanToVisibilityConverter.Convert几乎完全相同.我怀疑WPF核心会有这样的错误,让我相信这是ReSharper的一个问题.

c# resharper nullable type-conversion resharper-2016

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

WPF Interaction.Triggers MouseDown EventTrigger无法使用Canvas元素

我正在尝试创建一个MVVM WPF应用程序,该应用程序允许我在窗口中绘制一个矩形。现在,我已经创建了一个画布元素来覆盖整个屏幕。继等问题,并指导,它看起来像使用鼠标事件命令绑定(如只有这样MouseDownMouseUp等)是组装使用System.Windows.Interactivity并添加EventTriggers的鼠标事件。但是,这似乎不适用于canvas元素。单击,单击/按住,单击/拖动,右键单击,它们都不会触发我的命令的Execute方法。

canvas元素支持哪些事件?为什么会MouseDownPreviewMouseDown无法正常工作?

窗口的XAML:

<Window x:Class="RutheniumReader.SnippingWindow.SnippingShade"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:snippingWindow="clr-namespace:MyApp.SnippingWindow"
    mc:Ignorable="d"
    Title="Snipping Window"
    WindowState="Maximized"
    Background="Black"
    >
    <Window.DataContext>
        <snippingWindow:SnippingWindowViewModel />
    </Window.DataContext>
    <Canvas x:Name="Canvas">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDown">
                <i:InvokeCommandAction Command="{Binding Path=MouseDownCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Canvas>
</Window>
Run Code Online (Sandbox Code Playgroud)

出于测试目的,我尝试了以下运气不佳的事件:

  • 单击-如果将其应用于Button画布内的元素,则可以使用
  • 鼠标向下
  • PreviewMouseDown-与Button元素一起使用
  • MouseLeftButtonDown
  • PreviewLeftMouseButtonDown

c# wpf xaml eventtrigger mvvm

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