2015-09-23 44 views
0

我在我的WPF UserControl中有多個ListViews和ListBoxes。我想從他們中刪除選定的項目,只要他們不重點。如何在WPF中不在焦點時從ListView中刪除選擇?

我試過以下。

<Window.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="White"/> 
</Window.Resources> 

上述方法沒有區別。

<Style TargetType="ListViewItem"> 
    <Style.Triggers> 
     <Trigger Property="IsFocused" Value="false"> 
      <Setter Property="Selector.IsSelected" Value="False"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

僅當選擇了一個項目時,此方法纔會移除選擇。如果SelectionMode =「Extended」,則此方法不起作用。

+0

考慮寫一個附加的行爲來做到這一點。你將擁有比觸發更多的控制權。 – Gusdor

+0

你想讓你的選擇被刪除,然後在usercontrol獲得焦點時重新應用?或者只是刪除? – netaholic

+0

@netaholic我想完全刪除它。 – nan

回答

0

我建議以下代碼:

<ListView ItemsSource="{Binding Items}" SelectedItem="{Binding Item}" 
      FocusLost="your ICommand implementation/> 

在後面的代碼在你的命令上FocusLost:

try { 
    Items.Remove(Item); 
} catch (Exception ex) { 
    ... 
} 

應該爲你我猜工作。

+0

這就是我所做的。但我想知道我是否可以爲所有控件應用通用樣式。 – nan

+0

你是什麼意思的共同風格?如果答案正確,請將其標記爲答案(在左側) – kb9

+0

這是直接的方法。我在我的問題中提到我有多個ListView和ListBox。我想知道是否可以將通用樣式應用於所有這些控件以實現我所需的功能。 – nan

相關問題