WPF XamComboEditor / ComboEditorTool - 设置默认文本

时间:2010-09-03 10:11:03

标签: c# wpf infragistics

我正在尝试将一些默认文本添加到组合框中,这些组合框将在没有选择项目时显示。我正在使用一种风格来实现这一点,这在首次加载组合时效果很好。

<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 }" />

但是当重置组合的选定项目时(通过将其设置为null,将SelectedIndex设置为-1),它无法显示默认文本(即使触发器触发了),可能是什么原因造成的。 ?有没有更好的方法来重置所选项目?

干杯

这是我使用的解决方案,感谢@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 :(得分:0)

我不熟悉Infragistics套件,但我怀疑它与常规组合框相同:因为你对SelectedItem有一个绑定,所以Text不能设置为公然违反绑定的项目; Text是SelectedItem的表示。如果SelectedItem为null,则Text也必须是null的表示。

我猜测(没有尝试过,我可能只是完全错了)你可以通过一个IValueConverter实现这个目的,当传递的对象为null时返回一个自定义字符串(并返回该对象,否则)在SelectedItem绑定上。

答案 1 :(得分:0)

问这个问题已经有一段时间了,但是让我用与基础设施相关的更多答案来回答。


让我们从一个短边节点开始:
在使用XamComboEditor而不指定名称空间时,我们必须要小心, 因为在Infragistics框架中,该类定义了两次。

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

请参阅Infragistics帮助,建议的是 Infragistics.Windows.Editors.XamComboEditor

  

请参见About xamComboEditor:

     

我们建议您使用xamComboEditor控件而不是xamComboEditor(输入)控件。 xamComboEditor(输入)正计划在未来几年内停用,并且不会收到任何新功能。


现在是您的问题:
Infragistics.Windows.Editors.XamComboEditor和派生的Infragistics.Windows.Ribbon.ComboEditorTool都具有用于为空值设置默认文本的属性。此属性称为:

  

NullText
  当编辑器的值为null且编辑器未处于编辑模式时要显示的文本。默认值为空字符串。 (继承自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代码段:

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代码段:

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。的帮助文档中。 See here