2012-10-02 36 views
0
<ComboBox TextSearch.TextPath="MemberFullName" IsEditable="True" Height="23" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Margin="5,0,0,0" ItemsSource="{Binding MemberCollection}" SelectedItem="{Binding SelectedSearchMember,Mode=TwoWay,ValidatesOnDataErrors=True}"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding MemberFullName}" VerticalAlignment="Center"/> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
</ComboBox> 

在鼠標左鍵按下它變成可編輯的如何在wpf上的鼠標左鍵組合框中關注組合框?

+0

恭喜,但什麼你的問題? –

+0

當用戶左鍵單擊時,它變得可編輯 – Andy

+0

什麼?你設置了「IsEditable = True」。因爲每當你想要擴展它時,它都會允許寫一些東西,根據它,它會給你'ItemSource'的建議, – Javidan

回答

0

如果使用MVVM模式,添加到您的視圖模型變量:

private bool _isEditableComboBox = false; 
     public bool IsEditableComboBox 
     { 
      get { return _isEditableComboBox; } 
      set { _isEditableComboBox = value; RaisePropertyChanged(() => IsEditableComboBox); } 
     } 

添加到您的項目彙編:System.Windows.Interactivity

添加到您的查看該組件的命名空間:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 

您的組合框改成這樣:

<ComboBox TextSearch.TextPath="MemberFullName" IsEditable="{Binding IsEditableComboBox, UpdateSourceTrigger=PropertyChanged}" Height="23" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Margin="5,0,0,0" ItemsSource="{Binding MemberCollection}" SelectedItem="{Binding SelectedSearchMember,Mode=TwoWay,ValidatesOnDataErrors=True}"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="PreviewMouseDown"> 
        <i:InvokeCommandAction Command="{Binding TurnOnEditMode}" /> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding MemberFullName}" VerticalAlignment="Center"/> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
     </ComboBox> 

而且你必須添加到您的視圖模型下面的命令:

public ICommand TurnOnEditMode { get; private set; } 
     private void OnTurnoOnEditMode() 
     { 
      IsEditableComboBox = true; 
     }