[WPF] Combobox + textbox filtering - two way

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 17:16

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Allen,

ik ben een soort facturatie programma aan het maken voor een bevriend koppel van me, en hiervoor ga ik WPF gebruiken (kwestie van kennis op te doen :) ).

Nu heb ik op het Customer scherm een textbox en combobox welke respectievelijk dienen voor het ingeven van de postcode en het selecteren van de gewenste gemeente (opgelet, het is voor Belgie dus postcode is hier 4 unieke cijfers per gemeente).

Mijn bedoeling is dat wanneer ze bv. de eerste 3 tekens ingeven de combobox reeds gefilterd wordt en enkel de gemeenten toont waar de postcode begint met deze 3 tekens.

Andersom, wanneer ze een item selecteren uit de lijst moet de postcode in het textbox ingevuld worden.

Dit lukt min of meer, alleen gebeurt het volgende: ik typ de eerste 3 tekens in, ik krijg 5 resultaten en hier wil ik er een van selecteren..... Op dit moment wordt de functie 'textbox_changed' terug uitgevoerd waardoor ik dus mijn selectie niet zichtbaar/geselecteerd krijg in de dropdown.

Voorbeeld van correcte werking:
Textbox: 300
Dropdown: Leuven / Heverlee
Selecteer Heverlee --> textbox krijgt waarde 3001 --> Combobox toont Heverlee als geselecteerd

Voorbeeld van hoe het nu gaat:
Textbox: 300
Dropdown: Leuven / Heverlee
Selecteer Heverlee --> Textbox krijgt waarde 3001 --> Combobox toont niets geselecteerd.

Dit komt omwille van het feit dat hij de textbox waarde gaat updaten, waardoor hij de functie 'textchanged' gaat uitvoeren en de dropdown opnieuw wilt vullen....

Anybody got a clue?

Ik zou code willen tonen, maar daar straks reeds aan het prullen geweest en krijg het helemaal niet meer werkend....

Update:

UI.xaml
code:
1
2
<TextBox Height="23" Margin="6,81,0,0" Name="TxtZip" Text="{Binding Path=SelectedItem.ZipCode,ElementName=DdlCity}" TextChanged="ZipChanged" VerticalAlignment="Top" Grid.Column="1" HorizontalAlignment="Left" Width="70" MaxLength="4"  />
<ComboBox Height="23" Margin="82,81,12,0" Name="DdlCity" IsTextSearchEnabled="True" VerticalAlignment="Top" Grid.Column="1" ItemsSource="{Binding Path=City}" DisplayMemberPath="City" SelectedValuePath="ID"/>


In mijn code-behind file:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
 private void NewCustomer_Loaded(object sender, RoutedEventArgs e)
        {
            GetZipCityName ZipCity = new GetZipCityName();
            DdlCity.ItemsSource = ZipCity.GetZipCity();
        }

        private void ZipChanged(object sender, TextChangedEventArgs e)
        {
            GetZipCityName bl = new GetZipCityName();
            DdlCity.ItemsSource = bl.GetCityByZip(TxtZip.Text);
            DdlCity.IsDropDownOpen = true;
        }


maw: wanneer ik de volledige postcode intype (en 1 resultaat terug krijg) kan ik dit selecteren, eender welke andere manier vult hij de textbox op, maar blijft mijn dropdown leeg.... :(

Ik heb zo een gevoel dat dit veel makkelijker kan, maar vindt hier ook niet direct voorbeelden over :s

[ Voor 27% gewijzigd door dj_vibri op 21-12-2009 19:43 ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11-09 10:19
In Winforms doe je het door het event tijdelijk los te koppelen van het component en weer te koppelen als je em geupdate heb.

Mess with the best, die like the rest