2016-07-12 3 views
0

ich folgenden XAML-Code einfach bekam:Klicken Sie auf Textblock innerhalb Listview lassen mich nicht die ganze ListViewItem wählen

<ListView x:Name="myList" Height="447" Background="#FFC8F0F1" > 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ListViewItem> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding date}" Foreground="{Binding textcolor}" /> 
        <TextBlock Margin="5,0,0,0" Text="{Binding foo}" Foreground="{Binding textcolor}" /> 
        <TextBlock Margin="5,0,0,0" Text="{Binding bar}" Foreground="{Binding textcolor}" /> 
       </StackPanel> 
      </ListViewItem> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

ich mein Programm bin ab und der Code füllt das Listview mit Listviewitem, so weit, so gut ...

Sobald ich auf den Text (Textblocks alias alle Sachen innerhalb von StackPanel) klicke, wird das ListViewItem (background-area) nicht ausgewählt/markiert.

Wenn ich auf eine freie Stelle klicke, wo es keinen Text gibt, funktioniert es gut.

Ich habe sogar versucht, ListView zu ListBox zu ändern, es hat auch nicht funktioniert.

Antwort

0

Ihre DataTemplate sollte keine ListViewItem Instanz enthalten, das Steuerelement erstellt diese Container für Sie. Wenn Sie Eigenschaften für den Container festlegen müssen, verwenden Sie die ListView.ItemContainerStyle.

0

Sie könnten die ListView'sItemsSource auf ein ObservableCollection von FooBar Objekte binden wollen, dann wäre es trivial sein:

FooBarsView:

<UserControl x:Class="ListViewSelectingItem.View.FooBarsView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:ListViewSelectingItem.View" 
     xmlns:vm="clr-namespace:ListViewSelectingItem.ViewModel" 
     d:DesignHeight="300" 
     d:DesignWidth="300" 
     mc:Ignorable="d"> 
<UserControl.Resources> 
    <vm:FooBarsViewModel x:Key="fooBarsList"/> 
</UserControl.Resources> 
<Grid DataContext="{StaticResource fooBarsList}"> 
    <ListView ItemsSource="{Binding FooBars}"> 
     <ListView.ItemTemplate> 
      <DataTemplate DataType="{x:Type vm:FooBar}"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Foo}"/> 
        <TextBlock Text="{Binding Bar}"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 
</UserControl> 

FooBarsViewModel:

namespace ListViewSelectingItem.ViewModel 
{ 
using GalaSoft.MvvmLight; 
using System.Collections.ObjectModel; 
using Model; 
public class FooBarsViewModel : ViewModelBase 
{ 
    public FooBarsViewModel() 
    { 
     FooBars = new ObservableCollection<FooBar>(); 
     FooBars.Add(new FooBar { Foo = "Foo 1", Bar = "Bar 1" }); 
     FooBars.Add(new FooBar { Foo = "Foo 2", Bar = "Bar 2" }); 
     FooBars.Add(new FooBar { Foo = "Foo 3", Bar = "Bar 3" }); 
    } 

    public ObservableCollection<FooBar> FooBars { get; private set; } 
} 
}