开发者

Select a ListViewItem by clicking on the controls in its DataTemplate

开发者 https://www.devze.com 2023-03-10 18:43 出处:网络
I\'ve written a custom DataTemplate for items in a ListView, something like this: <DataTemplate x:Key=\"CustomerStateTemplate\">

I've written a custom DataTemplate for items in a ListView, something like this:

 <DataTemplate x:Key="CustomerStateTemplate">
    <Grid Margin="5, 5, 5, 5">
        <Grid.ColumnDefinitions>
      开发者_开发百科      ...
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            ...
        </Grid.RowDefinitions>

        <Image Grid.Row="0" Grid.RowSpan="2" Width="24" Height="20" ... />

        <TextBox Style="{StaticResource CustomerStyle}" Grid.Column="0" 
                       Grid.Row="0" Grid.ColumnSpan="2"
                       Name="nameField">
            <TextBox.Text>
                <Binding Path="Name" />
            </TextBox.Text>
        </TextBox>

        ...

and I've obtain my pretty style. Now, if I want to select the item, I must click on the white space between the template controls. If I click on the textbox in the ListViewItem, it won't select like an item. So, is there a way to select a ListViewItem by clicking on the controls in its template?

Thanks thousand!


Its possible to add a trigger on the ListViewItem which selects the item always then the keyboardfocus is inside of the item. As you do that on the ListViewItem you have the same behavior for all the controls inside the DataTemplate, which should be your solution...

example:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Grid>
  <Grid.Resources>
    <x:Array x:Key="Data" Type="{x:Type sys:String}">
      <sys:String>first</sys:String>
      <sys:String>second</sys:String>
      <sys:String>third</sys:String>
    </x:Array>
  <Style TargetType="ListViewItem" x:Key="itemStyle">
    <Style.Triggers>
      <Trigger Property="IsKeyboardFocusWithin" Value="True">
        <Setter Property="IsSelected" Value="True" />
      </Trigger>
    </Style.Triggers>
  </Style>
  </Grid.Resources>


  <ListView ItemsSource="{StaticResource Data}" ItemContainerStyle="{StaticResource itemStyle}">
    <ListView.ItemTemplate>
      <DataTemplate DataType="{x:Type sys:String}">
        <TextBox Text="{Binding .}">
        </TextBox>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
  </Grid>
</Page>

i hope its clear...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号