如何在C#中使用RadControls Q1 2013获取RadAutoCompleteBox的文本?
autoCompleteBox.SelectedItem
返回"ServerCrafterTelerikWPF.Command"
。
编辑1: 这是我的XAML:
<telerik:RadAutoCompleteBox x:Name="txtboxCommand" ItemsSource="{Binding Commands, Source={StaticResource ViewModel}}"
DisplayMemberPath="ACommand" AutoCompleteMode="Append" HorizontalAlignment="Left"
telerik:StyleManager.Theme="Modern" Margin="280,405,0,0"
VerticalAlignment="Top" Width="330" Height="30" KeyDown="txtboxCommand_KeyDown"/>
我没有任何C#代码。我只想在按下按钮时获取RadAutoCompleteBox中的文本。
编辑2:
这是我的collection
:
public class Command
{
public string ACommand { get; set; }
}
/// <summary>
/// A view model for MainWindow.xaml
/// </summary>
public class ViewModel
{
public ObservableCollection<Command> Commands { get; set; }
public ViewModel()
{
Commands = new ObservableCollection<Command>()
{
new Command() {ACommand = "stop "},
// Other commands...
// ...
// ...
};
}
}
答案 0 :(得分:3)
您应该从SelectedItem
属性中获取它。将其投放到您的班级,然后从MyClass.ACommand
我建议您在ViewModel中使用SelectedItem
绑定Mode=TwoWay
可以提供很多帮助。
只需将一个成员添加到ViewModel即可实现如下命令:
private Command _SelectedItem;
public Command SelectedItem
{
//get set with INotifyPropertyChanged
}
然后从xaml:绑定RadAutoCompleteBox的SelectedItem属性,如:
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
答案 1 :(得分:1)
我已经复制了这个问题。
是。我有same problem
。我found
问题和答案。
由于在视图模型中为所选项目使用了类型字符串,我遇到了问题。
private string selectedCommand;
public string SelectedCommand
{
get
{
return selectedCommand;
}
set
{
selectedCommand = value;
NotifyPropertyChanged("SelectedCommand");
}
}
使用类型作为命令类,您的问题将得到解决。
private Command selectedCommand;
public Command SelectedCommand
{
get
{
return selectedCommand;
}
set
{
selectedCommand = value;
NotifyPropertyChanged("SelectedCommand");
}
}
Bind
SelectedItem
RadAutoCompleteBox
的{{1}}属性
XAML
如果您想通过代码隐藏获取所选项目,请将所选项目转换为Command类类型。
<telerik:RadAutoCompleteBox
x:Name="txtboxCommand"
ItemsSource="{Binding Commands, Source={StaticResource ViewModel}}"
DisplayMemberPath="ACommand"
AutoCompleteMode="Append"
HorizontalAlignment="Left"
telerik:StyleManager.Theme="Modern"
Margin="280,405,0,0"
VerticalAlignment="Top"
Width="330"
Height="30"
KeyDown="txtboxCommand_KeyDown"
SelectedItem="{Binding SelectedCommand, Mode=TwoWay}"/>
实际上可以有var selectedItem = autoCompleteBox.SelectedItem as Command;
。在这种情况下,您必须定义multiple selected items
。
collection of Command objects
并将其绑定到RadAutoCompleteBox控件的private ObservableCollection<Command> selectedCommands;
public ObservableCollection<Command> SelectedCommands
{
get
{
return selectedCommands;
}
set
{
selectedCommands = value;
NotifyPropertyChanged("SelectedCommands");
}
}
属性(复数SelectedItem)。
SelectedItems
确保您已启动SelectedItems。
SelectedItems="{Binding SelectedCommands, Mode=TwoWay}"
答案 2 :(得分:0)
SearchText
的{{1}}属性应为您提供值。
根据documentation,它获取或设置RadAutoCompleteBox的TextBox部分中的字符串。 SearchText值用于过滤RadAutoCompleteBox的ItemsSource。
如果要获取AutocompleteBox的所选项目的“文本”,则需要将其强制转换为指定的类型。在您的情况下,它的类型为RadAutoCompleteBox
。
ServerCrafterTelerikWPF.Command