WPF XamComboEditor / ComboEditorTool - настройка текста по умолчанию - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь добавить текст по умолчанию в поля со списком, которые будут отображаться, когда не выбран ни один элемент.Я использую стиль для достижения этого, который прекрасно работает, когда комбо загружается впервые.

<Style TargetType="{x:Type igRibbon:ComboEditorTool}" x:Key="PleaseSelect">
<Style.Triggers>
<Trigger Property="SelectedIndex" Value="-1">
<Setter Property="Text" Value="Please Select" />
</Trigger>
</Style.Triggers>
</Style>

<igRibbon:ComboEditorTool Style="{StaticResource PleaseSelect}" 
ItemsSource="{Binding MyItems}" SelectedItem="{Binding MySelectedItem }" />

Но когда выбранный элемент комбо сбрасывается (устанавливая его в ноль, который устанавливает SelectedIndex в -1) он не отображает текст по умолчанию (даже если триггер срабатывает), что может быть причиной этого?Есть ли лучший способ сбросить выбранный элемент?

Cheers

Вот решение, которое я использовал, спасибо @AlexPaven за идею:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return "Please Select";
            }
            else
            {
                return value;
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is string && ((string)value) == "Please Select")
            {
                return null;
            }
            else
            {
                return value;
            }
        }

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Прошло много времени с тех пор, как был задан этот вопрос, но позвольте мне ответить на него более ответом, связанным с инфраструктурой.


Начнем с короткого бокового узла:
Мы должны быть осторожны при использовании XamComboEditor без указания пространства имен, потому что в инфраструктуре инфраструктуры класс определяется два раза.

1. Infragistics.Windows.Editors.XamComboEditor
2. Infragistics.Controls.Editors.XamComboEditor

Ссылаясь на справку по инфраструктуре, рекомендуется: Infragistics.Windows.Editors.XamComboEditor

См. О xamComboEditor:

Мы рекомендуем использовать элемент управления xamComboEditor вместо элемента управления xamComboEditor (Input). XamComboEditor (Input) планируется на пенсию в течение следующих нескольких лет и не получит никаких новых функций.


А теперь на ваш вопрос:
И Infragistics.Windows.Editors.XamComboEditor, и производные Infragistics.Windows.Ribbon.ComboEditorTool имеют свойство для установки текста по умолчанию для нулевых значений. Это свойство называется:

NullText
Текст, отображаемый, когда значение редактора равно нулю и редактор не находится в режиме редактирования. Значением по умолчанию является пустая строка. (Унаследовано от Infragistics.Windows.Editors.TextEditorBase)


Также Infragistics.Controls.Editors.XamComboEditor предоставляет такое свойство. Называется:

EmptyText
Получает / Устанавливает текст, который должен отображаться, когда в редакторе ничего не выделено. (Унаследовано от Infragistics.Controls.Editors.ComboEditorBase)


Пример для ComboEditorTool:

Ссылка на следующие dll:

  • InfragisticsWPF4.Editors.v18.1
  • InfragisticsWPF4.Ribbon.v18.1
  • InfragisticsWPF4.v18.1

XAML-сниппета:

xmlns:ribbon="http://infragistics.com/Ribbon"

...

<ribbon:ComboEditorTool Id="SampleComboEditorTool"
                        NullText="Select ..."
                        ItemsSource="{Binding }"
                        />

Скриншот:
Result CTE


Пример для Infragistics.Windows.Editors.XamComboEditor:

Ссылка на следующие dll:

  • InfragisticsWPF4.Editors.v18.1
  • InfragisticsWPF4.v18.1

xaml-Snippet:

xmlns:editors="http://infragistics.com/Editors"

...

<editors:XamComboEditor Width="120" Height="23"
                        ItemsSource="{Binding}" 
                        NullText="Select ..."
                        />

Скриншот:
Result I.W.E.XCE


Пример для Infragistics.Controls.Editors.XamComboEditor:

Ссылка на следующие dll:

  • InfragisticsWPF4.Controls.Editors.XamComboEditor.v18.1
  • InfragisticsWPF4.v18.1

xaml-Snippet:

xmlns:ig="http://schemas.infragistics.com/xaml"

...

<ig:XamComboEditor Width="120" Height="23" 
                   ItemsSource="{Binding}" 
                   EmptyText="Select ..."
                   />

Скриншот:
Result I.C.E.XCE


Примечание второй стороны: первое вхождение, которое я обнаружил для свойства NullText, было в справочном документе версии 2012.1. Смотрите здесь

0 голосов
/ 03 сентября 2010

Я не знаком с пакетом Infragistics, но подозреваю, что это то же самое, что и с обычными комбинированными полями: поскольку у вас есть привязка к SelectedItem, текст не может быть установлен на элемент, который явно не подчиняется этой привязке;Текст является представлением SelectedItem.Если SelectedItem имеет значение NULL, то текст также должен быть представлением NULL.

Я предполагаю (не пробовал, и я могу быть просто неправ), вы могли бы сделать это с помощью IValueConverter, который возвращает пользовательскую строку, когда переданный объект равен нулю (и возвращает объект без изменений в противном случае), устанавливается для привязки SelectedItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...