WPF Listbox => Immer letzes Item selectieren??



  • Hallo Leute,

    ich habe eine Listbox.. in der ich via "ListBox1.Items.Add(...)" simple Text
    Einträge anfüge.. wa auch klappt:)

    Nun will ich das die ListBox beim einfügen eines neune Eintrags (immer am Ende), gleichzeitig zu diesem letzen Eintrag springt. Habe es mit einem Binding versucht:

    <ListBox x:Name="DebugList" Height="100" SelectedIndex="{Binding ElementName=DebugList,Path=Items.Count, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>
    

    Aber es klappt trozdem net! Muss ich die Listbox noch aufforden das er da hin scrollen soll oder so???

    grüße



  • ich vermute das "Count" kein INotifyPropertyChanged implementiert
    mein derzeitiger vorschlag waere:

    //ModelView:

    public class DebugModelView : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
    
        public ObservableCollection<string> Items { get; set; }
        private string _currentItem { get; set; }
    
        public string CurrentItem
        {
            get { return _currentItem; }
            set
            {
                _currentitem = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("CurrentItem"));
            }
        }
    
        private void OnAddItem(string newItem)
        {
            Items.Add(newItem);
            CurrentItem = newItem;
        }
    }
    

    // view

    <ListBox Height="100" SelectedItem="{Binding CurrentItem}" ItemSource="{Binding Items}" IsSyncronizedWithCurrentItem="True" />
    

    ich glaub aber das die neuen items nicht von der ui kommen richtig ? das glaub ich wegen dem "DebugList"
    wenn dem so ist sollte man es auch wirklich "richtig" machen indem die eigentliche "debug liste" (das model) ein "ListChanged" oder "ItemAdded" event schickt und das ModelView dann nur seine liste fuer die view aktualisiert

    wenn du aber wirlich in der code behind bleiben willst (welches aber leer sein sollte) dann kannst du das selected index ja auch beim added im code setzen


Anmelden zum Antworten