ContentControl不显示Polygon

时间:2013-09-25 12:11:14

标签: c# wpf canvas resources polygon

我正在编写一个小程序来显示不同objects和国家/地区之间的联系状态。准确地说,这些对象是来自同一inherited的设备和部件class。如果存在这些对象之一与国家/地区之间的连接,则创建与对象和国家/地区相关的ConnectionObject。对于设备而言,这很简单:由于设备只能以一种方式连接到某个国家/地区,因此图标将始终相同。但是为了使它更复杂,部件有两种连接模式:包括和排除。因此,您可以说某个部分可以被批准或明确禁止来自某个国家/地区。为了显示这种差异,我想在表示连接ListViewItem的{​​{1}}中绘制不同的图标。 我的图标是呈现ConnectionObjects的(include = checkmark, exclude = cross, no connection = hide icon)的本地资源中的多边形。将ListView设置为附加到polygon的画布内的contentcontrol的资源可以很好地适用于设备,但不适用于部件。所以我尝试在ContentControl中创建ListViewItem来在polygons之间切换。我认为这样会很好,但即使图标所在的空间是打开的(如果没有连接,项目缩小到包含的标签大小),也没有绘制DataTrigger。我真的不知道为什么。说实话,我不是polygon专家,而是第一次体验这个框架。

这里有一些代码:

  1. ListView中的Rescource:

    wpf
  2. 表示DeviceConnections的ListViewItems的工作画布:

    <UserControl.Resources>
    <Polygon x:Key="Checkmark"  x:Shared="False"
        Points="0,4 4,8 12,0 12,4 4,12 0,8" Fill="#FF40C858" Stretch="Uniform"/>
    <Polygon x:Key="Crossmark"  x:Shared="False"
        Points="0,0 4,0 6,4 8,0 12,0 9,6 12,12 8,12 6,8 4,12 0,12 3,6" Fill="#FFE52826" Stretch="Uniform"/>
    </UserControl.Resources>
    
  3. 表示partConnections的ListViewItems的无效画布:

    <Canvas x:Name="DatCanvas" Width="12" Height="12" Margin="4" Visibility="{Binding IconVisibility}">
        <ContentControl x:Name="DeviceIcon" Content="{StaticResource Checkmark}" Canvas.Top="0" Canvas.Left="0"/>
    </Canvas>
    
  4. 有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:0)

直接在Canvas上设置

Remove the local value of Content,即不要在ContentControl节点中设置Content属性

 <ContentControl x:Name="PartIcon" Canvas.Top="0" Canvas.Left="0">

然后你的Style触发Setter值将被设置。