小编Bad*_*boy的帖子

使用样式触发器设置嵌套对象的属性

我在大画布上写了一个小多边形.我想在鼠标在画布上移动时突出显示多边形.代码是这样的:

<UserControl ...>
  <Canvas Name="canvas" Height="22" Width="22">
      <Canvas.Resources>
          <Style TargetType="Canvas">
              <Style.Triggers>
                  <Trigger Property="IsMouseOver" Value="false">
                      <Setter Property="polygon.Stroke" Value="#EEEEEE"/>
                  </Trigger>
                  <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="polygon.Stroke" Value="Aqua"/>
                </Trigger>
              </Style.Triggers>
          </Style>
      </Canvas.Resources>
      <Polygon Points="11,1 16,6 16,16 11,21" Name="polygon">
              <Polygon.Fill>
                  <SolidColorBrush Color="#EEEEEE"/>
              </Polygon.Fill>
      </Polygon>
  </Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

但是,setter看不到"多边形".

wpf xaml

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

使用openmp任务的部分并行循环

先决条件:

  • 并行引擎:OpenMP 3.1+(如果需要可以是OpenMP 4.0)
  • 并行结构:OpenMP任务
  • 编译器:gcc 4.9.x(支持OpenMP 4.0)

输入:

  • 带循环的C代码
  • 循环具有交叉迭代数据依赖性:"i + 1"迭代需要来自"i"迭代的数据(只有这种依赖,没有别的)
  • 循环体可以部分依赖
  • 循环不能分为两个循环; 循环体应保持稳固
  • 任何合理的东西都可以添加到循环或循环体函数定义中

代码示例:

(这里conf/config/configData变量仅用于说明目的,主要的兴趣在于value/valueData变量.)

void loopFunc(const char* config, int* value)
{
    int conf;
    conf = prepare(config);         // independent, does not change “config”
    *value = process(conf, *value); // dependent, takes prev., produce next
    return;
}

int main()
{
    int N = 100;
    char* configData;           // never changes
    int valueData = 0;          // initial value
    …
    for (int i = 0; i < N; i++)
    {
        loopFunc(configData, …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing multithreading task openmp

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

AvalonDock 2.0:在反序列化布局后添加 LayoutDocument 不起作用

只有 LayoutDocumentPane 的简单 AvalonDock 应用程序。 程序示例

XAML:

<Window x:Name="MainWindow1" x:Class="AvalonTest2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
        Title="MainWindow" Height="350" Width="525" Loaded="MainWindow1_Loaded">
    <Grid Name="MainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <ToolBar Grid.Row="0" Grid.Column="0">
            <Button Content="New Tab" Margin="10,0,0,0" Click="NewTabClick"/>
            <Button Content="Save layout" Margin="10,0,0,0" Click="Button_Click"/>
        </ToolBar>

        <xcad:DockingManager x:Name="dockManager" Grid.Row="1">
            <xcad:LayoutRoot x:Name="_layoutRoot">
                <xcad:LayoutPanel Orientation="Horizontal" x:Name="_layoutPanel">
                    <xcad:LayoutDocumentPane x:Name="workSpace">
                        <xcad:LayoutDocument ContentId="dummy" Title="Dummy" >
                            <Button x:Name="dummyButton" Content="Dummy Content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </xcad:LayoutDocument>
                    </xcad:LayoutDocumentPane>
                </xcad:LayoutPanel>
            </xcad:LayoutRoot>
        </xcad:DockingManager>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码:

using System;
using System.IO;
using System.Windows;
using Xceed.Wpf.AvalonDock.Layout;
using Xceed.Wpf.AvalonDock.Layout.Serialization;

namespace AvalonTest2 …
Run Code Online (Sandbox Code Playgroud)

c# wpf avalondock

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

多个按钮的 CommandBarButton 单击事件

我需要在 Visio 窗口中使用一组按钮创建自己的工具栏。下一个代码生成工具栏(有效),创建按钮(有效),并为它们分配 Click 事件处理程序。

vsoCommandBar = vsoCommandBars.Add("MyCommandBat", Office.MsoBarPosition.msoBarTop, false, true);

var vsoButtonX1 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 1, false);
vsoButtonX1.Caption = "Test1";
vsoButtonX1.Tag = "";
vsoButtonX1.Click += GlobalEvents.btnTestClick;

var vsoButtonX2 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 2, false);
vsoButtonX2.Caption = "Test2";
vsoButtonX2.Tag = "";
vsoButtonX2.Click += GlobalEvents.btnTest2Click;
Run Code Online (Sandbox Code Playgroud)

处理程序很简单,但不同(当然)。

public void btnTestClick(Office.CommandBarButton vsoButton, ref bool cancelDefault)
{
    MessageBox.Show("btnTestClick!");
}

public void btnTest2Click(Office.CommandBarButton vsoButton, ref bool cancelDefault)
{
    MessageBox.Show("btnTest2Click!");
}
Run Code Online (Sandbox Code Playgroud)

当我单击任何按钮时,我会看到带有“btnTestClick!”的对话框。并在按下带有“btnTest2Click!”的“确定”对话框后。在两个按钮中的任何一个上。

此外,如果我跳过这一行:

vsoButtonX2.Click += GlobalEvents.btnTest2Click;
Run Code Online (Sandbox Code Playgroud)

我会看到单个对话框“btnTestClick!” 在任何按钮上。

至少对于命令栏,它似乎只有一个单击处理器。是真的吗?!

PS:当然,我可以使用“vsoButton”参数和标签来检测按钮被按下,但使用不同的事件处理程序似乎更方便......这可能吗?

c# vsto visio add-in

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

标签 统计

c# ×2

wpf ×2

add-in ×1

avalondock ×1

c ×1

multithreading ×1

openmp ×1

parallel-processing ×1

task ×1

visio ×1

vsto ×1

xaml ×1