Laden...

ItemTemplateSelector SelectedTemplate wird nicht mehr ausgelöst

Erstellt von _Cashisclay vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.078 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren
ItemTemplateSelector SelectedTemplate wird nicht mehr ausgelöst

Hallo zusammen,

ich nutze zur Zeit eine FilteralbeComboBox den ich hier gefunden habe :

https://stackoverflow.com/questions/2001842/dynamic-filter-of-wpf-combobox-based-on-text-input/55190176#55190176

Die Lösung die dort angeboten wird funktioniert soweit auch einwandfrei.

Nur nutze ich bei einigen ComboBoxen die ich dadurch jetzt ersetzen möchte einen ItemTemplateSelector, der funktionierte bisher auch super. Ich denke mal das in der Klasse irgendwas überschrieben wird was dort in Konflikt kommt, jedenfalls wird nach der Auswahl das SelectedTemplate nicht mehr ausgelöst.

Hab mich jetzt schon eine Weile mit auseinandergesetzt, aber ich seh es einfach nicht, eventuell kann mir ja jemand weiterhelfen.

                            <Filterable:FilterableComboBox  Grid.Column="2"
                                                                HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
                                                                    ItemsSource="{Binding ComboBoxWithdrawalSystemChargeItemsSource, UpdateSourceTrigger=PropertyChanged}"
                                                                        ItemTemplateSelector="{DynamicResource ItemTemplateSelector}"
                                                                            SelectedItem="{Binding ComboBoxWithdrawalSystemChargeSelectedItem, UpdateSourceTrigger=PropertyChanged}"
                                                                                Text="{Binding ComboBoxWithdrawalSystemChargeText, UpdateSourceTrigger=PropertyChanged}"
                                                            Style="{StaticResource BaseComboBox}">

                                <Filterable:FilterableComboBox.ItemContainerStyle>

                                    <Style TargetType="{x:Type ComboBoxItem}">

                                        <Setter Property="HorizontalContentAlignment"   Value="Center"/>

                                        <Setter Property="VerticalContentAlignment"     Value="Center"/>

                                    </Style>

                                </Filterable:FilterableComboBox.ItemContainerStyle>
                                
                                <Filterable:FilterableComboBox.Resources>
                                    
                                    <DataTemplate x:Key="SelectedTemplate">

                                        <TextBlock Text="{Binding Path=NumberOfCharge}"/>

                                    </DataTemplate>

                                    <DataTemplate x:Key="DropDownTemplate">

                                        <TextBlock Text="{Binding Path=DisplayMemberPath}"/>

                                    </DataTemplate>
                                    
                                    

                                    <ItemTemplateSelector:ComboBoxItemTemplateSelector x:Key="ItemTemplateSelector"
                                                                                            SelectedTemplate="{StaticResource SelectedTemplate}"
                                                                                            DropDownTemplate="{StaticResource DropDownTemplate}"/>
                                    
                                </Filterable:FilterableComboBox.Resources>

                        </Filterable:FilterableComboBox>

Grüße

301 Beiträge seit 2009
vor 4 Jahren

Erzeug den TemplateSelector doch mal etwas weiter oben in den Ressourcen des Parents und mach aus dem DynamicResource Verweis eine StaticResource.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Probier ich gleich mal aus, kann mir aber nicht vorstellen das es daran liegt. Das DropDownTemplate erkennt er ja und das wird auch ausgelöst, das SelectedTemplate wird allerdings nur einmal am Anfang wo es null ist ausgelöst, danach wenn man den Wert wechselt nicht, ich denke das es irgendwas mit dem SelectionChanged zu tun hat, weil dort ja einige Funktionen überschrieben werden. Und bei einer normalen ComboBox funktioniert der Aufruf ja auch, aber ich probiere es mal aus 😃

Edit : unverändert

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Hier mal ein Bild zum ansehen. Im Dropdown greift es, nach der Selection nicht mehr.
(Wie gesagt bei der normalen ComboBox funktioniert es)

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 4 Jahren

Okay es liegt am IsEditable = true, so viel hab ich schon mal herausgefunden.

Edit : Okay, ich habs. Irgendwie beißt sich das mit dem ItemTemplateSelector und dem IsEditable, wenn man aber zusätzlich noch den TextSearch.TextPath mit angibt funktioniert es wieder.

Mich würde zwar interessieren wie das alles zusammenhängt, aber bin erstmal froh das es funktioniert.

Auch wenn es sich falsch anfühlt 🤔

Grüße


                            <Filterable:FilterableComboBox  Grid.Column="2"
                                                                HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
                                                                    ItemsSource="{Binding ComboBoxWithdrawalSystemChargeItemsSource, UpdateSourceTrigger=PropertyChanged}"
                                                                        ItemTemplateSelector="{DynamicResource ItemTemplateSelector}"
                                                                            SelectedItem="{Binding ComboBoxWithdrawalSystemChargeSelectedItem, UpdateSourceTrigger=PropertyChanged}"
                                                                                TextSearch.TextPath="NumberOfCharge"
                                                            Style="{StaticResource BaseComboBox}">

                                <Filterable:FilterableComboBox.ItemContainerStyle>

                                    <Style TargetType="{x:Type ComboBoxItem}">

                                        <Setter Property="HorizontalContentAlignment"   Value="Center"/>

                                        <Setter Property="VerticalContentAlignment"     Value="Center"/>

                                    </Style>

                                </Filterable:FilterableComboBox.ItemContainerStyle>
                                
                                <Filterable:FilterableComboBox.Resources>
                                    
                                    <DataTemplate x:Key="SelectedTemplate">

                                        <TextBlock Text="{Binding Path=NumberOfCharge}"/>

                                    </DataTemplate>

                                    <DataTemplate x:Key="DropDownTemplate">

                                        <TextBlock Text="{Binding Path=DisplayMemberPath}"/>

                                    </DataTemplate>
                                    
                                    

                                    <ItemTemplateSelector:ComboBoxItemTemplateSelector x:Key="ItemTemplateSelector"
                                                                                            SelectedTemplate="{StaticResource SelectedTemplate}"
                                                                                            DropDownTemplate="{StaticResource DropDownTemplate}"/>
                                    
                                </Filterable:FilterableComboBox.Resources>

                        </Filterable:FilterableComboBox>