Telerik RadComboBox应用SelectionBoxTemplate OnLoad?

时间:2014-11-15 01:35:56

标签: c# wpf xaml silverlight telerik

基本上,我们使用Telerik的RadComboBox和SelectionBoxTemplate创建了我们自己的自定义MultiSelect-ComboBox,以便在选择多个项目时显示自定义文本。

<ucControls:MultiSelectComboBoxBase
  ... >

<ucControls:RadComboBox
    x:Name="RadCombo"
    Text=""
    Height="22"
    HorizontalContentAlignment="Left"
    HorizontalAlignment="Stretch"
    DropDownClosed="RadCombo_DropDownClosed"
    IsTextSearchEnabled="False"
    IsEnabled="{Binding IsEnabled}"
    CanAutocompleteSelectItems="False"
    CanKeyboardNavigationSelectItems="False"
    LostFocus="RadCombo_LostFocus">

    <ucControls:RadComboBox.SelectionBoxTemplate>
        <DataTemplate>
            <Grid Background="Aqua">
                <TextBlock x:Name="ComboBoxDisplay" Text="{Binding Text, ElementName=RadCombo}" />
            </Grid>
        </DataTemplate>
    </ucControls:RadComboBox.SelectionBoxTemplate>

    <ucControls:RadComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <CheckBox x:Name="chkBox"
                          Content="{Binding ItemValue}"
                          Tag="{Binding ItemID}"
                          Height="16" Margin="2"
                          IsChecked="{Binding IsChecked, Mode=TwoWay}"
                          Visibility="{Binding IsSelectAllItem, Converter={StaticResource booleanToVisibilityConverter}, ConverterParameter=NOT}"
                          HorizontalAlignment="Stretch" VerticalAlignment="Top"
                          Checked="ChkBox_Checked" Unchecked="ChkBox_Unchecked"
                          IsEnabled="{Binding IsEnabled, Mode=TwoWay}"/>

                <HyperlinkButton
                    VerticalAlignment="Center" Content="{Binding ItemValue}"
                    Visibility="{Binding IsSelectAllItem, Converter={StaticResource booleanToVisibilityConverter}}"
                    Style="{StaticResource HyperlinkButtonNoBorderStyle}" Margin="3,2,0,0"
                    Click="HyperlinkButton_Click"
                    IsEnabled="{Binding IsEnabled, Mode=TwoWay}" />
            </StackPanel>
        </DataTemplate>
    </ucControls:RadComboBox.ItemTemplate>
</ucControls:RadComboBox>

它工作得很好,但唯一的问题是,当加载radcombobox时,似乎并未实际应用SelectionBoxTemplate。仅在单击框时适用。

加载时显示:


然后点击它会显示下拉列表:

然后你点击它,它会从SelectionBoxTemplate中显示正确的文字:



注意我将Textblock的背景颜色设为蓝色,只是为了表明它不适用于初始载荷。

理想情况下,它加载它应该自动应用SelectionBoxTemplate并显示正确的信息,而不是点击,然后单击远离multiselectcombobox。此外,TextBlock文本绑定到RadComboBox的文本,因为在后面的代码中我们设置了RadComboBox的文本。由于我查看了调试模式并且所有信息都在那里,因此我没有设置空值或者之前没有设置Text,所以在框获得焦点之前,选择框模板才会被应用。

是否有某种事件必须在应用模板之前触发,或者是否有某种情况我可以强制模板应用于上载?

1 个答案:

答案 0 :(得分:0)

我和你有同样的问题。我设法通过设置SelectedIndex="0"
来解决它 我还读到SelectionBoxTemplate仅在RadComboBox无法编辑时才起作用:IsEditable="False"

<ucControls:RadComboBox
    x:Name="RadCombo"
    SelectedIndex="0"
    IsEditable="False"
    Height="22"
    HorizontalContentAlignment="Left"
    HorizontalAlignment="Stretch"
    DropDownClosed="RadCombo_DropDownClosed"
    IsEnabled="{Binding IsEnabled}"
    LostFocus="RadCombo_LostFocus">
...
</ucControls:RadComboBox>