Text property

13 posts, 1 answers
  1. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 27 Mar 2013 Link to this post

    Hi,

    Will this control have a Text property that we could use to get the visible text? Using the combination of SearchText and SelectedItem, depending on if the user actually selected from the list, or entered a completly new value is not really "developer friendly".

    update: of course, this can only work if the SelectionMode is set to Single. If it's multiselect, my question is not valid.

    Thanks,
    Gyula
  2. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 28 Mar 2013 Link to this post

    Hi Gyula,

    The RadAutoCompleteBox does not have a Text property. Since the AutoComplete entries are treated as Tokens, you can use the SelectedItem.ToString() to get the selected item text. The SearchText does not return the AutoCompleteBox items, instead it returns the plain text you are entering in the AutoCompleteBox to filter out items.

    Thanks,
    Princy.
  3. UI for WPF is Visual Studio 2017 Ready
  4. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 28 Mar 2013 Link to this post

    Hello Princy,

    Yes, that is how it works. To retreive the displayed value, I have to check if it's a SelectedItem, and if it's not, then take the SearchText. What if the user enters a valid value, but not from the list. Like the google navigation bar in Google Chrome. It offers me a lot of possible solutions, but my final text may not be in their list.
    This control works great if you want to enter "tags", but it's a bit complicated when it comes to the "google search textbox" solution. With a Text property, this could be a lot more easier. It could be read-only, and it's value wouldn't be very useful with multiselect. (comma or separeted values)

    So, to post a question: how do you implement the google chrome navigation bar with this control?

    Thanks,
    Gyula
  5. Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 01 Apr 2013 Link to this post

    Hello,

    In the current version of RadAutoCompleteBox there is a known issue that is causing the SearchText property of the control to not be updated when an item has been selected. When this issue is resolved the SearchText property will represent the selected item's text when a selection is made which should help the previously described limitations of the SearchText property.

    The issue is logged in our Public Issue Tracker System where you can track its status.

    All the best,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  6. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 02 Apr 2013 Link to this post

    Hello Vladi,

    Thank you for your answer. Will this mean, that the SearchText property will always contain the visible text in the control?

    Gyula
  7. Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 02 Apr 2013 Link to this post

    Hi,

    When the issue is resolved the SearchText property will represent the typed in text when a selection is not made and the visible text when an item is selected. Meaning that if you highlight an item by navigating to it with the keyboard when the AutoCompleteMode is set to Append or SuggestAppend the appended text will not be represented in the SearchText property.

    All the best,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  8. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 02 Apr 2013 Link to this post

    Hello again,

    I see.
    I've put together a small project to show what I want to create, and why I would like to use a Text property.

    UI:
    <Window x:Class="RadAutoCompleteBoxTest.MainWindow"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
                    Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <telerik:RadAutoCompleteBox Grid.Row="0" Name="radacb" SelectionMode="Single" />
            <telerik:RadButton Grid.Row="1" Content="Search the WEB" Click="RadButton_Click" />
        </Grid>
    </Window>

    CodeBehind:
    using System;
    using System.Linq;
    using System.Windows;
    using System.Collections.Generic;
    using Telerik.Windows.Controls;
     
    namespace RadAutoCompleteBoxTest
    {
      public partial class MainWindow : Window
      {
        List<string> suggestions = new List<string> {
          "telerik",
          "radautocompletebox",
          "text property",
          "google search box",
          "behavior",
          "behaviour",
          "developer friendly controls",
          "p0rn",
        };
     
        public MainWindow()
        {
          InitializeComponent();
     
          radacb.ItemsSource = suggestions;
        }
     
        private void RadButton_Click(object sender, RoutedEventArgs e)
        {
          string searchString = string.Empty;
          if (radacb.SelectedItem != null) // does it have anything selected?
          {
            // get the selected value, since SearchText will NOT contain the whole string
            searchString = radacb.SelectedItem.ToString();
          }
          else
          {
            // get the value from SearchText
            searchString = radacb.SearchText;
          }
     
          if (searchString.Length > 0)
          {
            // it's a new value, let's store it somehow
            if (!suggestions.Contains(searchString))
              suggestions.Add(searchString);
            RadWindow.Alert(searchString);
          }
        }
      }
    }

    In codebehind, I would like to use only 1 property. (And do databinding.) For example, a Text property, that gets the whole string visible in the control. And please note the SelectionMode="Single" setter in the XAML. (The Text property would have meaning only with this set.)

    I hope this clears things.

    Gyula
  9. Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 05 Apr 2013 Link to this post

    Hi,

    As mentioned before when the issue with the SearchText property is resolved the property should be useful in this scenario because it will represent the inputted text when a selection is not made and the displayed text when a selection is made. The only limitation would be when a selection is not made and an item is highlighted by navigation to it with the keyboard and the AutoCompleteMode is either Suggest or SuggestAppend. In that case the appended text from the highlighting will not be included in the SearchText property and it will still represent the inputted text.

    Regards,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  10. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 05 Apr 2013 Link to this post

    Hi,

    That's closer. (Altough, if you resolve this "issue", we will loose the SearchText value after selection. It would look like, if the user searched for that particular value.)
    I think my problem is, that RadAutoCompleteBox can do much more, that I actually need. I'm thinking with list of strings, and not with list of complex objects. From this perspective, a (Display)Text property can not be implemented. (Won't work with multiselect, won't work with complex objects, ect.)
    I can create a "limited" version of your control, implementing a Text property. I just wanted to avoid this, because it would add one more layer of maintanence. But, after all, that's my job...

    Thank you for your help,
    Gyula
  11. Answer
    Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 10 Apr 2013 Link to this post

    Hi,

    We believe that the SearchText property by design should update its value to the full visible text when a selection is made and the current behavior of that property is not correct.

    Unfortunately as you mentioned when the issue is resolved you will no longer be able to access the inputted text but we believe that, that text is of no importance after a selection is made and the full visible text is more important because we are not aware of any scenarios in which the inputted text would be of importance.

    Could you describe to us in more details a scenario in which that text would be useful in order for us to go through the useful cases where it could be important and possibly implement such functionality in the future versions of the control.

    Greetings,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  12. Gyula
    Gyula avatar
    9 posts
    Member since:
    May 2012

    Posted 10 Apr 2013 Link to this post

    Hi,

    To be honest, probably I won't be needing the typed text at any given time.
    But, just for the sake of argument, let's say I'm working for a company, named Giigle. We would like to implement a search engine, but with a black screen. Our biggest value would be the statistical data we collect from the users. We would like to know, that on avarage, how many characters had to be typed to present an usable value for the user. (This could help us improve our engine.)
    Another use could be, to present advertisement to the users, because we know that when someone types "TELE", then in 95% of the cases, they choose "TELERIK". (So, they would see your ad, even when they just type "TELE".)
    Of course, this is just in theory - as I mentioned, I'm OK, if you resolve the issue.

    On the other hand, when the control autosuggests a value, but the user does not select anything from the list, the SearchText property will still be containing the typed text. Correct? Because it would be a real case scenario to be able to use the control to add new items to a list.

    For example:
    I have a list containing AAABBB and AAACCC. The user enters AAA, and hits ENTER. I want to add to my list this value (AAA), and not the autosuggested value (for example AAABBB). This way, when the user starts to type A, the list will contain AAA, AAABBB, AAACCC. (Let's call this "the learning list".)

    Thanks,
    Gyula
  13. Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 11 Apr 2013 Link to this post

    Hi,

    Thank you for your feedback.

    You are correct when an item is not selected the SearchText would remain the inputted text, only if a selection is made the SearchText will be updated.

    Regards,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  14. Jeremy
    Jeremy avatar
    1 posts
    Member since:
    Sep 2016

    Posted 09 Sep in reply to Vladi Link to this post

    I had a similar problem accessing the displayed text in the box versus the typed text. I solved it by accessing the WatermarkBox in my event handler.

    Based on what I was needing this works perfectly.

     

    var box = (RadAutoCompleteBox)sender;
    var textBox = box.ChildrenOfType<RadWatermarkTextBox>().First();
    string displayedText = textBox.text;

Back to Top
UI for WPF is Visual Studio 2017 Ready