小编Joh*_*son的帖子

触摸注入后恢复被抑制的光标

我正在编写一个帮助器,用于在使用InjectTouchInput的 UI测试中注入触摸.

注入的触摸工作正常,但触摸后无法注入鼠标输入.

Mouse.Click(point); // works
Touch.Tap(point); // works
Mouse.Click(point); // does not work, mouse cursor no longer visible on screen.
Run Code Online (Sandbox Code Playgroud)

调用GetCursorInfo()显示光标是CURSOR_SUPPRESSED,我还没有找到恢复它的方法.

移动物理鼠标会带回光标,点击工作正常.

我怎样才能恢复鼠标,让鼠标再次在这里工作?

c# windows wpf pinvoke winapi

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

WindowsBase.dll中出现'System.InvalidCastException'类型的第一次机会异常

我将ListBox的ItemsSource绑定到一个时遇到此异常ObservableCollection<object>.

该集合填充了{DependencyPropertyChangedEventArgs,EventEntry}

我偷看DependencyPropertyChangedEventArgs并发现:

public struct DependencyPropertyChangedEventArgs
{
    ...
    public override bool Equals(object obj)
    {
        return this.Equals((DependencyPropertyChangedEventArgs)obj); <- huge cast right here?
    }
}
Run Code Online (Sandbox Code Playgroud)

EventEntry的代码:

public class EventEntry
{
    public EventEntry(string name)
    {
        Name = name;
    }
    public string Name { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

当我阅读偷看的代码时,它被设计为爆炸.

这是正确的吗?

c# wpf casting listbox equality

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

是否有命令自动将箱子添加到我的Cargo.toml?

我希望有类似的东西:cargo install stopwatch但在文档中找不到它.

查找软件包版本并手动将软件包添加到.toml:

[dependencies]
stopwatch="0.0.6"
Run Code Online (Sandbox Code Playgroud)

感觉不够自动化.:)

rust rust-cargo

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

是否有类似ctrl + m + o的Xaml?

在使用Xaml时,我经常会错过CTL+ M+ O,它会折叠代码编辑器中的所有属性和方法.

我安装了Xaml Regions,它很不错但我仍然想念CTL+ M+O

我玩过:

CTL+ M+M

CTL+ M+L

CTL+ M+P

CTL+ M+U

但他们都没有做我想要的.

是否有扩展甚至内置命令可以实现我想要的功能?

为了清除,我希望资源文件的所有子项折叠为一行,以便于导航,如下所示:

在此输入图像描述

resharper xaml visual-studio

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

是否可以将自定义结构序列化为xml属性?

是否可以将自定义结构序列化为xml属性?

示例代码:

public class Dummy<T>
{
    private Dummy() { }
    public Dummy(T item1)
    {
        Item1 = item1;
        Item2 = item1;
    }

    public T Item1 { get; set; }
    [XmlAttribute]
    public T Item2 { get; set; }
}

public struct Meh
{
    public int Prop { get; set; }
}

[Test]
public void XmlMehTest()
{
    var meh = new Meh{Prop = 1};
    var dummy = new Dummy<Meh>(meh);
    using (var writer = new StringWriter())
    {
        var serializer = new XmlSerializer(dummy.GetType());
        // System.InvalidOperationException …
Run Code Online (Sandbox Code Playgroud)

c# struct xml-serialization xml-attribute

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

获取 GridViewColumn 的父级

有没有办法获取 GridViewColumn 的父级(ListView)?

我尝试过 LogicalTreeHelper 和 VisualTreeHelper,但没有骰子。

我可以分享一个有点有趣的你尝试过的东西,它有效但丑陋并不能描述它:

public class Prototype
{
    [Test, RequiresSTA]
    public void HackGetParent()
    {
        var lw = new ListView();
        var view = new GridView();
        var gvc = new GridViewColumn();
        view.Columns.Add(gvc);
        lw.View = view;
        var ancestor = new Ancestor<ListView>();

        var binding = new Binding
        {
            RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(ListView), 1),
            Converter = new GetAncestorConverter<ListView>(), // Use converter to hack out the parent
            ConverterParameter = ancestor // conveterparameter used to return the parent
        };
        BindingOperations.SetBinding(gvc, GridViewColumn.WidthProperty, binding); …
Run Code Online (Sandbox Code Playgroud)

c# wpf gridview attached-properties

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

可以将TypeConverter用于构造函数参数

我正在尝试写一个像这样的markupextension:

[MarkupExtensionReturnType(typeof(Length))]
public class LengthExtension : MarkupExtension
{
    // adding the attribute like this compiles but does nothing.
    public LengthExtension([TypeConverter(typeof(LengthTypeConverter))]Length value)
    {
        this.Value = value;
    }

    [ConstructorArgument("value")]
    public Length Value { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

要像这样使用:

<Label Content="{units:Length 1 mm}" />
Run Code Online (Sandbox Code Playgroud)

Errs:

类型"长度"的TypeConverter不支持从字符串转换.

如果我:TypeConverter工作:

  • 把它放在Value房产上并有一个默认的ctor.
  • Length用属性装饰类型.

虽然这可能是x/y,但我不想要任何这些解决方案.

这是转换器的代码:

public class LengthTypeConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(string))
        {
            return …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml typeconverter markup-extensions

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

有没有办法判断 DependencyProperty 的值来自绑定源还是目标?

我有时想知道依赖属性的值是来自用户输入还是来自绑定源的更改。我还没有找到一个干净的方法来确定这一点。

有像DependencyPropertyHelper这样的东西,但据我所知,它对这种情况没有帮助。

场景:<TextBox Text="{Binding Foo}" />

查明最后更新的是绑定源还是目标Text。或者其他什么,是的,我知道触发器、继承动画等。

wpf binding dependency-properties

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

枚举程序集中的命名空间

我正在尝试枚举程序集中声明的所有名称空间.做这样的事情感觉非常不优雅:

foreach (var syntaxTree in context.Compilation.SyntaxTrees)
{
    foreach (var ns in syntaxTree.GetRoot(context.CancellationToken).DescendantNodes().OfType<NamespaceDeclarationSyntax>())
    {
        ...         
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做的好方法是什么?一个树步行者会更好一点,但之前要求我感觉这已经在符号API的某个地方了.

c# roslyn

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

如何确定一个类型是否支持相等运算符

我正在生成需要使用检查相等性的代码 SyntaxGenerator

样品:

if (property.Type.IsValueType || property.Type == KnownSymbol.String)
{
    if (property.Type.TypeKind == TypeKind.Enum ||
        property.Type.GetMembers("op_Equality").Length == 1)
    {
        var valueEqualsExpression = syntaxGenerator.ValueEqualsExpression(
            SyntaxFactory.ParseName("value"),
            SyntaxFactory.ParseExpression(fieldAccess));
        return (IfStatementSyntax)syntaxGenerator.IfStatement(valueEqualsExpression, new[] { SyntaxFactory.ReturnStatement() });
    }
    ...
Run Code Online (Sandbox Code Playgroud)

问题是这不能处理类型int.

猜猜我在寻找类似的东西 SupportsValueEquals(ITypeSymbol symbol)

我如何判断一个类型是否支持通过==

c# roslyn

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