我有PortItem
哪个衍生自ContentControl
,TextedStackPanel
衍生自StackPanel
哪个包含PortItems
。在MainWindow
我有 2 个StackPanels
包含TextedStackPanels
. 在PortItem
我有覆盖的 MouseLeftButtonDown
方法。但是当我在这个方法上这样做时不会被解雇。我在论坛里搜索了这里,发现必须将Background
属性Grid/StackPanel
设置为透明。我应用了这个,但没有任何变化。该怎么办 ?
编辑 1
我使用部分类。我有 2 个课程:PortItem.cs
和PortItem.cs.xaml
. 我修改此 XAML 文件中的任何视觉更改。
编辑 2
也不会触发任何鼠标事件。当我保持鼠标打开时,我使用 IsMouseOver 的触发器也不起作用PortItem
XAML
<ContentControl x:Class="**.PortItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:UI="clr-namespace:**.UIData" Width="17" Height="17" Margin="3" SnapsToDevicePixels="True" >
<Grid Background="Transparent" Name="mainGrid">
<!-- transparent extra space makes connector easier to hit -->
<Rectangle Fill="Transparent" Margin="-2"/>
<Border BorderBrush="Green" x:Name="border" BorderThickness="2">
<Border.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Path=IsMouseOver}" Value="True">
<Setter Property="Border.BorderBrush" Value="Blue"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Border.BorderBrush" Value="Blue"/>
</DataTrigger>
<!--<DataTrigger Binding="{Binding ContactPort}" Value="{x:Null}">
<Setter TargetName="border" Property="Border.BorderBrush" Value="Green"/>
</DataTrigger>-->
</Style.Triggers>
</Style>
</Border.Style>
<Image Source="/**;component/Resources/1337238611_port.png">
</Image>
</Border>
</Grid>