tags:

views:

25

answers:

1

Hello all, I have a combobox which when clicked will show a treeview in the drop down. In the displayed tree view you can check and uncheck treeview items. But when I double click on treeview items I am getting a part of tree view displayed in the editable text box of the combobox. I dont want anything to be displayed there? How to get rid of it

here's my XAML..

<ComboBox Grid.Column="3" IsEditable="False" Grid.Row="1" Margin="2" ItemContainerStyle="{StaticResource ComboTreeSelectionStyle}" IsEnabled="{Binding SelectedLookIn, Converter={StaticResource LocationToTypeEnabledConverter},UpdateSourceTrigger=PropertyChanged}" MaxDropDownHeight="300" >
                            <TreeView ItemsSource="{Binding Path=SearchFilterTypes}" ItemContainerStyle="{StaticResource TreeViewItemStyle}" HorizontalContentAlignment="Stretch">
                                <TreeView.Resources>
                                    <HierarchicalDataTemplate DataType="{x:Type viewModels:SomeTypeViewModel}" ItemsSource="{Binding Path=Children}">
                                        <CheckBox Content="{Binding Path=Name}" Margin="1" IsChecked="{Binding Path=IsChecked}" />
                                    </HierarchicalDataTemplate>
                                </TreeView.Resources>
                            </TreeView>
                        </ComboBox>
A: 

You will probably need to replace your control template for this combo box and bind the ContentPresenter to the value you want to display:

<ControlTemplate x:Key="ExclusionsComboBoxTemplate" TargetType="{x:Type ComboBox}">
                <AdornerDecorator>
                    <Grid>
                        <ToggleButton BorderBrush="#00000000" Focusable="false" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" Background="#00000000" Style="{x:Null}" />
                        <ToggleButton Grid.Column="2" Template="{DynamicResource ComboBoxToggleButton}" x:Name="ToggleButton" Focusable="false" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/>

                        <ContentPresenter HorizontalAlignment="Left" Margin="3,3,23,3" x:Name="ContentSite" VerticalAlignment="Center" Content="{Binding Path=SelectedExclusionsCount}" IsHitTestVisible="False"/>

                        <TextBox Visibility="Hidden" Template="{DynamicResource ComboBoxTextBox}" HorizontalAlignment="Left" Margin="3,3,23,3" x:Name="PART_EditableTextBox" Style="{x:Null}" VerticalAlignment="Center" Focusable="True" Background="Transparent" IsReadOnly="{TemplateBinding IsReadOnly}"/>
                        <Rectangle x:Name="DisabledVisualElement" Fill="#A5FFFFFF" RadiusX="4" RadiusY="4" IsHitTestVisible="false" Visibility="Collapsed" />
                        <Rectangle x:Name="FocusVisualElement" Margin="-1" Stroke="{DynamicResource selectedStroke}" StrokeThickness="1" RadiusX="4" RadiusY="4" IsHitTestVisible="false" Opacity="0"/>
                        <Popup IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" x:Name="Popup" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide">
                            <Grid MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{TemplateBinding ActualWidth}" x:Name="DropDown" SnapsToDevicePixels="True">
                                <Border x:Name="DropDownBorder" Background="#FFFFFFFF" BorderBrush="{DynamicResource TextBoxNorm}" BorderThickness="1" CornerRadius="1,1,3,3">
                                    <ScrollViewer Margin="4,6,4,6"   SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True">
                                        <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained"/>
                                    </ScrollViewer>
                                </Border>
                            </Grid>
                        </Popup>
                    </Grid>
                </AdornerDecorator>
            </ControlTemplate>

I have used this template to make a CheckedList in a combobox, the display in the text section displays how many items are selected

benPearce
I don't want to change the template since I want my control independent of themes.. Any suggestions?
Dheena
Do you mean that there is theme information in my example, then remove it. If you want to avoid maintaining two control templates, then I don't have another solution
benPearce