2017-05-18 7 views
1

ItemTemplateにDataTemplateを使用するリストボックス(Silverlightで)があります。 DataTemplateをは次のように定義されています。私は私のイベントRoleStackPanel_MouseLeftButtonUpが唯一の火災のTextBlockに表示されている任意のテキストをクリックするとことを発見したXAML:MouseLeftButtonUpは、空白ではなくテキストをクリックすると発生します。

<DataTemplate> 
    <StackPanel Orientation="Horizontal" 
       MouseLeftButtonUp="RoleStackPanel_MouseLeftButtonUp" 
       Tag="{Binding}"> 
     <TextBlock Name="roleItem" 
        Text="{Binding Path=DisplayValue, Mode=TwoWay}"/> 
    </StackPanel> 
</DataTemplate> 

。ユーザーがテキストの右側にある項目の空白をクリックすると、イベントは発生しません。コントロールの幅が300ピクセルで、項目に「管理者」という単語しかない場合は、「管理者」をクリックし、空白の空白をクリックしないでください。

アイテム、テキスト、空白のいずれかをクリックしたときにイベントが発生するようにするにはどうすればよいですか?

答えて

2

そこで、素早く検討してください。

)。パネルの領域には、デフォルトでHitTestVisibilityがありません。これは意図的な設計によるものです。親のためにあなたのイベントを発動させるには、IsHitTestVisible="True"のプロパティを追加するか、パネルにBrushを提供してBackground="Transparent"を介してHitTestVisibilityを呼び出します。

b。)StackPanelは、その子が必要とするスペースのみを消費します。ユーザーがスワップするよりも大きな領域を提供したい場合はStackPanelGridとし、その親によって利用可能なスペースを消費する必要があります。 HitTestVisibilityの同じ規則が適用されます。

<DataTemplate> 
    <Grid IsHitTestVisible="True" 
      MouseLeftButtonUp="RoleStackPanel_MouseLeftButtonUp" 
      Tag="{Binding}"> 
     <TextBlock Name="roleItem" 
        Text="{Binding Path=DisplayValue, Mode=TwoWay}" /> 
    </Grid> 
</DataTemplate> 

+0

それでした!ご協力ありがとうございました。巨大な時間の節約! – Walter

関連する問題