私はPortItem
から派生したContentControl
、TextedStackPanel
から派生した を持ってStackPanel
いますPortItems
。そして、MainWindow
私にはStackPanels
を含む2つがありますTextedStackPanels
。PortItem
私は MouseLeftButtonDown
メソッドをオーバーライドしました。しかし、このメソッドでこれを行うと、起動されません。フォーラムでここを検索したところ、 のBackground
プロパティGrid/StackPanel
を透明に設定する必要があることがわかりました。これを適用しましたが、変更はありません。何をすべきか ?
編集 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>