2016-10-11 51 views
0

我有ItemTemplate中內部單選按鈕列表視圖:的ListView與單選按鈕在ItemTemplate中不更新的SelectedItem

<ListView ItemsSource="{Binding }"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <RadioButton IsChecked="{Binding Choice1}" /> 
       <RadioButton IsChecked="{Binding Choice2}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

這是可以選擇的「背景」當前項目。但是,如果我單擊一個RadioButton SelectedItem未設置。

enter image description here

期望的行爲:如果點擊了一個 「childitem」 的ListViewItem的選擇。當您設置標誌時,就像Outlook一樣,當前的郵件被選中。

enter image description here

我一定要泡了click事件不知何故?

回答

1

此行爲來自於這樣一個事實,即在該情況下ListViewItem屬性爲IsKeyboardFocusWithin。在單擊RadioButton時,RadioButton具有鍵盤焦點。

解決方案

添加一個簡單的觸發器這樣

<Style TargetType="ListViewItem"> 
     <Style.Triggers> 
       <Trigger Property="IsKeyboardFocusWithin" Value="true"> 
         <Setter Property="IsSelected" Value="true" /> 
       </Trigger> 
     </Style.Triggers> 
</Style> 

完全樣本

<ListView ItemsSource="{Binding }"> 
      <ListView.Resources> 
       <Style TargetType="ListViewItem"> 
        <Style.Triggers> 
         <Trigger Property="IsKeyboardFocusWithin" Value="true"> 
          <Setter Property="IsSelected" Value="true" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </ListView.Resources> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <RadioButton IsChecked="{Binding Choice1}" /> 
         <RadioButton IsChecked="{Binding Choice2}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

注意

要確保你選擇正確的TargetType(ListViewItemListBoxItemTreeViewItem

希望這有助於

+0

感謝。這爲我做了詭計 – Mat

相關問題