如何仅在源为空时禁用RadComboxBox并显示工具提示消息

时间:2015-11-30 05:00:14

标签: c# wpf xaml telerik

我必须在GridViewDataColumn中添加一个RadComboBox。必须使用List填充此组合框。我必须提出一个条件,如果List是空的,那么应该禁用这个组合框,并且必须显示工具提示消息" No Settings available"。

以下是我在xaml文件中的代码:

<telerikGrid:GridViewDataColumn HeaderCellStyle="{StaticResource HeaderStyle}"
                                                            Width="Auto"
                                                            Header="Decrypt" x:Name="colDecrypt">
    <telerikGrid:GridViewColumn.CellStyle>
        <Style TargetType="telerikGridView:GridViewCell">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="telerikGridView:GridViewCell">
                        <Border>
                            <telerik:RadComboBox x:Name="cbxDecrypt" Margin="5,1,5,1" Width="Auto"
                                            ItemsSource="{Binding Mode=OneWay, Source={StaticResource Parameter}, Path=EquivalenceNames}"
                                            SelectionChanged="cbxDecrypt_SelectionChanged" SelectedItem="{Binding SelectedEquivalence}"
                                            ToolTipService.ToolTip="No Decrypt Settings available"
                                            />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </telerikGrid:GridViewColumn.CellStyle>
</telerikGrid:GridViewDataColumn>

任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

我创建了一个简单的例子: 我们将使用ObservableCollection作为DataContext:

DataContext = new ObservableCollection<string>();

默认情况下,工具提示不显示在禁用控件上,因此我们需要使用ToolTipService.ShowOnDisabled属性。

<telerik:RadComboBox ToolTipService.ShowOnDisabled="True" ItemsSource="{Binding}">
    <telerik:RadComboBox.Style>
        <Style TargetType="telerik:RadComboBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Count, Mode=OneWay}" Value="0">
                    <Setter Property="IsEnabled" Value="False"/>
                    <Setter Property="ToolTip" Value="No Decrypt Settings available"/>
                </DataTrigger>    
            </Style.Triggers>
        </Style>
    </telerik:RadComboBox.Style>
</telerik:RadComboBox>

如果您使用Noxaml版本的telerik库,那么您需要一些修复:

<Style TargetType="telerik:RadComboBox" BasedOn="{StaticResource RadComboBoxStyle}">
    <!--...-->
</Style>

答案 1 :(得分:0)

我发现以下链接非常有用,可以轻松解决我的问题:

  1. 如果第一个问题是如果List为空则禁用项目,这里提供了一个非常简单的解决方案:
  2. ComboBox IsEnabled Binding Question in Silverlight Xaml

    1. 要显示工具提示消息的第二个问题,此处提供了一个非常好的解决方案: http://dotplusnet.blogspot.in/2010/09/workaround-for-showing-tooltip-for.html
    2. 使用边框背景=“透明”就像魅力一样解决了这个问题。