2011-06-07 67 views
1

我寫了一個自定義的DataTemplate在一個ListView項目,像這樣的東西選擇的ListViewItem:通過點擊控件的DataTemplate中

<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> 

     ... 

,我已經得到我的漂亮的風格。 現在,如果我想選擇該項目,我必須單擊模板控件之間的空白區域。如果我點擊ListViewItem中的文本框,它將不會像一個項目一樣選擇。那麼,有沒有辦法通過點擊模板中的控件來選擇一個ListViewItem?

謝謝千!

+0

你是不是想用'textbox'作爲'lable'? – Rev 2011-06-07 11:07:07

+0

我可以,但我想直接更新內容。我也遇到過與組合框相同的問題 – Archedius 2011-06-07 11:11:17

回答

4

它可能添加一個觸發器的ListViewItem選擇該項目總是然後keyboardfocus在該項目的內部。當你這樣做是對的ListViewItem您對的DataTemplate內的所有控件,這應該是您的解決方案相同的行爲...

例如:

<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> 

我希望它清楚...

+0

它像魔術一樣工作!很感謝! :) – Archedius 2011-06-07 11:52:47