小编Mim*_*imi的帖子

如何在C#XML注释中显示'<'char?

我搜索了很多,但是找不到如何在C#XML注释中显示'<'char?

c# xml

57
推荐指数
4
解决办法
2万
查看次数

为什么我必须两次定义一个可交换运算符?

我想知道我是否必须*两次定义一个可交换运算符(如)!

public static MyClass operator *(int i, MyClass m)
{
    return new MyClass(i * m.Value);
}

public static MyClass operator *(MyClass m, int i)
{
    return new MyClass(m.Value * i);
}
Run Code Online (Sandbox Code Playgroud)

这背后的逻辑是什么?


附加说明:亲爱的@Marc关于向量和矩阵乘法的答案是好的, 当且仅当我们假设操作数类型不同时!很明显,我们只能定义*一次运算符来执行向量或矩阵乘法.所以我认为这不是答案.

@Marc:订单在运营商中有时很重要.

是的,但这不等同于Order在操作数中有时很重要!如果在+操作员之前(或之后)使用操作*员将导致不同的结果,则可以使用上述句子.例如:

0 + 2 * 2 != 0 * 2 + 2

假设我们将*运算符定义为:

public static MyClass operator *(MyClass m1, MyClass m2)
{
    return new MyClass(m1.Value * m2.Value /* or some …
Run Code Online (Sandbox Code Playgroud)

c#

11
推荐指数
2
解决办法
1747
查看次数

如何从XAML访问元素资源中的故事板?

考虑以下代码:

<UserControl x:Class="MyApp.MyControl"
             ...
         xmlns:local="clr-namespace:MyApp"
         DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}">

    <UserControl.Template>
        <ControlTemplate>
            <ControlTemplate.Resources>
                <Storyboard x:Key="MyStory">
                    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="brdBase">
                        <SplineColorKeyFrame KeyTime="0:0:1" Value="Red"/>
                    </ColorAnimationUsingKeyFrames>
                </Storyboard>
            </ControlTemplate.Resources>

            <Border x:Name="brdBase" BorderThickness="1" BorderBrush="Cyan" Background="Black">
                ...
            </Border>

            <ControlTemplate.Triggers>
                <Trigger SourceName="brdBase" Property="IsMouseOver" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource MyStory}"/>
                    </Trigger.EnterActions>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </UserControl.Template>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

上面的代码没有问题.现在,我想将关键帧值绑定到此用户控件MyStory的DP(命名SpecialColor),如下所示:

<Storyboard x:Key="MyStory">
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="brdBase">
        <SplineColorKeyFrame KeyTime="0:0:1" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MyControl}}, Path=SpecialColor}"/>
    </ColorAnimationUsingKeyFrames>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)

这会出错:

无法冻结此Storyboard时间轴树以跨线程使用.

使用后面的代码可以做到这一点.但是我怎么才能在XAML中做到这一点?


代码隐藏辅助解决方案:

步骤1:MyStory故事板放入brdBase资源中.

<UserControl.Template>
    <ControlTemplate>
        <Border x:Name="brdBase" BorderThickness="1" …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml binding storyboard

9
推荐指数
1
解决办法
7016
查看次数

如何在 C# XML 中显示泛型类型摘要

/// <summary>\n/// Something about this generic method which works with ??? type.\n/// </summary>\n/// <typeparam name="T">\xe2\x88\x99\xe2\x88\x99\xe2\x88\x99</typeparam>\n/// <returns></returns>\npublic T Foo<T>()\n{\n    \xe2\x88\x99\xe2\x88\x99\xe2\x88\x99\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

是否可以在摘要标签中写入注释以显示当前给定的通用类型。(就像视觉工作室一样)?

\n\n

例如Something about this generic method which works with string type.我们可以在工具提示中看到Foo<string>()

\n

c# generics summary

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

在WPF UserControl上应用样式的问题

我有一个用户控件,我想在其他项目中使用它.当我直接为其属性设置一些值时没有问题:

<local:MyUserControl prop1="val1" prop2="val2">
    ...
</local:MyUserControl>
Run Code Online (Sandbox Code Playgroud)

但我无法应用它的风格.我试过了:

<Window ...>
    <Window.Resources>
        <Style x:Key="MyUserControlStyle" TargetType="{x:Type local:MyUserControl}">
            <Setter Property="prop1" Value="val1"/>
            <Setter Property="prop2" Value="val2"/>
        </Style>
    </Window.Resources>

    <Grid>
        <local:MyUserControl Style="{StaticResource ResourceKey=MyUserControlStyle}">
            ...
        </local:MyUserControl>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我哪里错了?-谢谢

c# wpf user-controls coding-style

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

知道DataBinding何时完成

我已经在我的应用程序中使用了System.ComponentModel.BindingListDataGridView.DataSource.该列表非常大,需要几秒钟才能绘制出来DataGridView.所以,我需要知道数据绑定(包括绘画)程序什么时候完成一些东西.我尝试了DataBindingComplete事件,但它在向DataSource属性设置值后立即发生.

提前致谢.


更新:

1.生成绑定列表[从数据库获取数据] ►~1秒

2.将其设置为DataSource [ Binding ] ►~1秒(此时DataBindingComplete正在抬起.)

3.绘画[显示数据DataGridView ] ►~5秒

c# binding datagridview winforms

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

如何更改打开的ToolStripDropDownButton的背景颜色?

ToolStripDropDownButton当打开下拉菜单时,我需要更改a的背景颜色.我该怎么做?

我尝试从中继承一个类ToolStripProfessionalRenderer然后覆盖它OnRenderDropDownButtonBackground,但它只影响下拉菜单何时关闭.

c# winforms toolstripdropdown

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

几个MultiDataTriggers仅适用于最后一个

UserControl我有一个类型的DP enum(GroupStyle类型eGroupStyle)和类型bool(IsGrouped)的DP .我需要在所有可能的条件下开始一些故事板.但最后MultiDataTrigger一件作品才有效.我哪里错了?此外,我想知道是否存在一种更简单的方法来考虑这些条件.(检查IsGrouped一次.)

C#:

enum eGroupStyle
{
    GroupStyle1,
    GroupStyle2,
    ???,
    GroupStyleN,
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/>
        <Condition Binding="{Binding IsGrouped}" Value="False"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.EnterActions>
        <BeginStoryboard  Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle1}"/>
    </MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/>
        <Condition Binding="{Binding IsGrouped}" Value="True"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.EnterActions>
        <BeginStoryboard  Storyboard="{StaticResource Storyboard_TurnToSelectedStyle1}"/>
    </MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding GroupStyle}" Value="GroupStyle2"/>
        <Condition Binding="{Binding IsGrouped}" Value="False"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.EnterActions>
        <BeginStoryboard  Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle2}"/>
    </MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml multidatatrigger

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

默认命令目标是什么?

关于在“ WPF控件开发”书中扮演默认命令目标角色的元素,有两种不同的想法:

Page 258»命令目标是在其上引发命令的对象。ICommandSource接口包含可以设置为特定对象的CommandTarget属性。默认情况下,命令源本身被视为命令目标。

Page 262» 默认情况下,未设置CommandTarget时,将使用具有键盘焦点的元素。

此外,在本教程中,我们可以使菜单项和按钮命令目标保持未定义状态,而只有菜单项(即不是按钮)才能真正检测命令目标。那么默认的命令目标是什么?

c# wpf command

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

为什么不使用FindIndex()并以比FindAll()更快的迭代返回?

我需要在列表项上测试的匹配条件非常耗时.而且,我知道条件将匹配不超过3项列表.

因此,检查所有列表项可能不是最好的主意; 然而,当我试图用FindFindex()最高的方法3次,测试了超过这些情况我以前FindAll()Where().

如何加快这种方法,或者最快找到三个匹配?

| #  Method            Time (sec)
| -------------------------------
| 1   Find (one-by-one)   42.37
| 2   FindAll             30.17
| 3   Where               30.53
Run Code Online (Sandbox Code Playgroud)

方法#1:

{
    int index;
    Predicate<T> predicate = t =>
        {
            ...
        };

    index = myCollection.FindIndex(predicate);

    if (index != -1)
    {
        T t1 = myCollection[index];
        myCollection.RemoveAt(index);

        index = myCollection.FindIndex(predicate);

        if (index != -1)
        {
            T t2 = myCollection[index];
            myCollection.RemoveAt(index);

            index = myCollection.FindIndex(predicate);

            if (index != -1)
            {
                T t3 = myCollection[index]; …
Run Code Online (Sandbox Code Playgroud)

c# list

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