У меня есть PortItem
, полученное из ContentControl
, TextedStackPanel
, полученное из StackPanel
, которое содержит PortItems
. А в MainWindow
у меня есть 2 StackPanels
, которые содержат TextedStackPanels
. В PortItem
я переопределил метод MouseLeftButtonDown
. Но когда я делаю это, этот метод не запускается. Я искал здесь на форуме и обнаружил, что для свойства Background
Grid/StackPanel
должно быть установлено значение Transparent. Я применил это, но нет никаких изменений. Что делать ?
EDIT 1 Я использую частичные классы. У меня 2 класса: PortItem.cs
и PortItem.cs.xaml
. Я изменяю любые визуальные изменения в этом файле XAML.
EDIT 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>