2013-08-23 5 views
1

Я работаю с элементами управления WPF ComponentOne с шаблоном MVVM.Взаимодействие с MVVM wpf

У меня есть следующие в моем ViewModel:

public ICommand ClientsEnter 
{ 
    get 
    { 
     if (this.m_ClientsEnter == null) 
     { 
      this.m_ClientsEnter = new DelegateCommand<string>(ClientsLostFocusExecute, 
ClientsLostFocusCanExecute); 
     } 
     return m_ClientsEnter; 
    } 
} 

И наблюдаемой коллекции:

public ObservableCollection<Client> Clients 
{ 
    get { return m_Clients; } 
    set 
    { 
     m_Clients = value; 
     RaisePropertyChanged("Clients"); 
    } 
} 

В Xaml я добавил ComponentOne Combo Box, где я могу ввести ClientName Или ID и нажмите клавишу ВВОД пожара Событие для выполнения команды ClientEnter:

<Custom1:C1ComboBox Grid.Row="2" Grid.Column="1" Height="24" Name="cmbClients" 
    HorizontalAlignment="Left" VerticalAlignment="Center" ItemsSource="{Binding 
    Clients, Mode=OneWay}" SelectedValuePath="ClientID" DisplayMemberPath="NameE" 
    IsEditable="True" Text="Enter Client Name Or ID" SelectedValue="{Binding 
    Path=Filter.ClientID, Mode=TwoWay}" MinWidth="150" Margin="0,2" Width="189"> 
    <i:Interaction.Triggers> 
     <ei:KeyTrigger Key="enter" FiredOn="KeyUp" ActiveOnFocus="True" SourceName= 
      "cmbClients"> 
      <i:InvokeCommandAction Command="{Binding ClientsEnter, Mode=OneWay}" 
       CommandParameter="{Binding Text,ElementName=cmbClients}" 
       CommandName="KeyDown"/> 
     </ei:KeyTrigger> 
    </i:Interaction.Triggers> 
</Custom1:C1ComboBox> 

Мне нужно знать, почему это делается не работает, после нажатия введите идентификатор клиента Исчезнет и ничего не произойдет. Даже текст = «Введите имя клиента или идентификатор» не появляется! Есть идеи? Обратите внимание, что когда я меняю ключ в космос, он работает, но он не принимает текст из combobox,

+0

Вызываете ли вы свою команду, затем нажимаете на пользователя Enter? Можете ли вы также предоставить код для команды и DataContext Combobox (ваша модель взгляда) – Nikolay

+0

Проведя 2 дня, исследуя эту проблему, я обнаружил, что в C1Combobox есть ошибка, поскольку я заменил ее на telerik Comboxbox и добавил тот же триггер, не меняя ничего в xaml, за исключением контроля, и он отлично работает. , наконец, я не рекомендую C1 wpf controls –

ответ

1

Проведя 2 дня, исследуя эту проблему, я обнаружил, что в C1Combobox есть ошибка, поскольку я заменил ее на telerik Comboxbox и добавьте тот же самый триггер, не изменяя ничего в xaml, кроме элемента управления, и он отлично работает.

, наконец, я не рекомендую C1 wpf controls