【发布时间】:2015-01-12 12:39:09
【问题描述】:
基本上,我们使用 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 并显示正确的信息,而不是单击然后单击远离多选组合框。此外,TextBlock 文本绑定到 RadComboBox 的文本,因为在后面的代码中我们设置了 RadComboBox 的文本。没有空值或之前没有设置文本的问题,因为我已经在调试模式下查看并且所有信息都在那里,直到框获得焦点才应用选择框模板。
在应用模板之前是否有某种事件必须触发,或者我是否可以强制在加载时应用模板?
【问题讨论】:
标签: c# wpf xaml silverlight telerik