我正在尝试将一些默认文本添加到组合框中,这些组合框将在没有选择项目时显示。我正在使用一种风格来实现这一点,这在首次加载组合时效果很好。
<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;
}
}
答案 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
我们建议您使用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:
xaml代码段:
xmlns:ribbon="http://infragistics.com/Ribbon"
...
<ribbon:ComboEditorTool Id="SampleComboEditorTool"
NullText="Select ..."
ItemsSource="{Binding }"
/>
Infragistics.Windows.Editors.XamComboEditor
的示例:
引用以下dll:
xaml代码段:
xmlns:editors="http://infragistics.com/Editors"
...
<editors:XamComboEditor Width="120" Height="23"
ItemsSource="{Binding}"
NullText="Select ..."
/>
Infragistics.Controls.Editors.XamComboEditor
的示例:
引用以下dll:
xaml代码段:
xmlns:ig="http://schemas.infragistics.com/xaml"
...
<ig:XamComboEditor Width="120" Height="23"
ItemsSource="{Binding}"
EmptyText="Select ..."
/>
第二点说明:我发现的属性NullText首次出现在版本2012.1。的帮助文档中。 See here