1

我正在使用带有 MVVM 模式的 ComponentOne 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 组合框,我可以在其中输入 ClientName 或 ID,然后按 enter 触发 Event 以执行 ClientsEnter 命令:

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

我需要知道为什么它不起作用,在按下输入后,clientID 消失并且没有任何反应。甚至 text="Enter Client Name or ID" 也没有出现!有任何想法吗?请注意,当我将键更改为空格时,它可以工作,但不会从组合框中获取文本,

4

1 回答 1

1

在花了 2 天时间调查此问题后,我发现 C1Combobox 中存在一个错误,因为我将其替换为 telerik Comboxbox 并添加了相同的触发器,除了控件之外没有更改 xaml 中的任何内容,并且它工作正常。

最后,我不推荐 C1 wpf 控件

于 2013-08-24T00:43:21.530 回答