1
我正在使用MVO模式的ComponentOne WPF控件。与MVVM的交互wpf
我在我的视图模型如下:
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的组合框,我可以进入客户端名或ID,然后按回车发射事件来执行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消失,没有任何反应。即使是文字=“输入客户名称或ID”也没有出现!有任何想法吗? 注意,当我改变的关键在于空间它的工作原理,但它不采取从组合框的文本,
是你的命令被称为然后用户按下回车键?你还可以为你的命令和Combobox的DataContext(你的视图模型)提供代码 – Nikolay
花了2天的时间调查这个问题后,我发现在C1Combobox中存在一个bug,因为我用telerik Comboxbox取代了它,并且添加了同样的触发器而没有改变任何东西在XAML除了控制,它工作正常。 终于,我不推荐C1 wpf控件 –