获取RadAutoCompleteBox的文本

时间:2013-04-09 06:20:34

标签: c# wpf xaml telerik rad-controls

如何在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...
                // ...
                // ...
            };
    }
}

3 个答案:

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