2017-06-28 7 views
0

自分自身もXAMLのListBoxを持っています(私の言語であるC#と私はVS2010を使用しています)。このListBoxにはいくつかのアイテムがあり、SelectionChangedイベントもあります。私にとっての問題は、イベントがアイテムの一部に対してのみ発砲していることです。XAMLリストボックスSelectionChanged - 選択可能なアイテム全体で機能しない

この絵はそれを明確に私が思うようになります。この場合

Selection problem

、「N1が」選択されていますが、別のものを選択するために、私は周りの狭い領域でクリックする必要がありますアイテムの端 - n1の周りにダークブルーとして表示される領域。

このSelectionChangedをアイテムのさまざまな部分に適用する方法はありますか?明らかにそこにテキスト入力があるので、その部分ではありませんが、残りは素晴らしいでしょう。

アイテム自体は、ListBoxコントロール内で、次のようにListBox.Itemテンプレート内のデータテンプレートは次のとおりです。

<Thumb Name="myThumb" Template="{StaticResource NodeVisualTemplate}"> 

次のように述べた静的リソースがある:

あなたが扱うことができる
<ControlTemplate x:Key="NodeVisualTemplate"> 
      <Border BorderThickness="2" BorderBrush="LightBlue" Margin="2" CornerRadius="5,5,5,5"> 
       <StackPanel> 
        <TextBlock Text="Test" Background="AntiqueWhite"/> 
        <TextBlock Text="{Binding Path=NodeText}" Background="Aqua"/> 
        <StackPanel Orientation="Horizontal"> 
         <TextBox Text="Type here" MinWidth="50"/> 
         <Image Source="{StaticResource ImgFolder}" Margin="0,0,5,0" Width="32" Height="32"/> 
        </StackPanel> 
       </StackPanel> 
      </Border> 
     </ControlTemplate> 

答えて

2

ListBoxItemコンテナのPreviewMouseLeftButtonDownは、その内部の任意の場所をクリックすると選択することができます。

<ListBox x:Name="lb"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lb_PreviewMouseLeftButtonDown" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Thumb Name="myThumb" Template="{StaticResource NodeVisualTemplate}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
予想通り210
private void lb_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    ListBoxItem lbi = sender as ListBoxItem; 
    lb.SelectedItem = lbi.DataContext; 
} 

これはSelectionChangedイベントを発生すべきです。

+0

ありがとうございます。これはビューモデル内でも機能しますか?私はMVVMを使用しています。私は 'EventToCommand'を使用してVMにイベントを取得することができ、パラメータもMVVM Lightの魔法のおかげです。 – TheFaithfulLearner

+0

ビューに実装する必要がある純粋なビューロジックです。ビューモデルは、マウスクリックの結果としてListViewItemがいつ選択されるか気にするべきではありません。 – mm8

+0

よろしくお願いいたします。私は、後ろのコードでは何も好まれない人たちと一緒に、あまりにも密接に従ってきたと思います。 – TheFaithfulLearner

関連する問題