wpf zugriff auf listbox

04/13/2020 14:28 Singleplayer™#1
Moin,
Da ich bei google bisher nichts finden konnte frag ich einfach mal hier.

und zwar hab ich das problem , das die listbox angeblich nicht im kontext enthalten ist, bin es halt gewohnt durch windows form , das man einfach name.items.add() macht und dann hat sich die sache erledigt geht aber in dem fall irgendwie nicht :thinking:

hier noch der code part , auch wenn der eig egal ist , da ich ja schon sagte habs wie winforms aufgebaut ...
Code:
string fullPath = theDialog.FileName;
                        string[] lines = File.ReadAllLines(fullPath, Encoding.UTF8); ;
                        foreach(string line in lines)
                        {
                            combolist1.Items.Add(line);
                        }
#edit
hab den fehler letztendlich doch gefunden , wusste nicht das wpf so nervig ist und man sogar noch den datasource binden muss...

für alle die das selbe problem haben hier die lösung:

04/13/2020 16:05 SturTex#2
Noch eine kleine Bemerkung :)

Der Kontext wird separat gebunden, da WPF für ein MVVM Pattern ausgelegt wurde.
→ View, Logik & Datenzugriff sind in getrennten Klassen, "Code-Behind" sollte nicht mehr angewendet werden


Das XAML (View) würde etwa so aussehen:
Code:
<Window.DataContext>
        <local:ViewModel/>
</Window.DataContext>
<Grid>
        <ListBox ItemsSource="{Binding FileObjectCollection}" 
		SelectedItem="{Binding SelectedFileObject}"/>
    </Grid>


Die Logik (ViewModel) würde etwa so aussehen:
Code:
#region SelectedFileObject
        private FileObject selectedFileObjects;
        public FileObject SelectedFileObject
        {
            get { return selectedFileObjects; }
            set
            {
                if (value != this.selectedFileObjects)
                    selectedFileObjects = value;
                this.SetPropertyChanged("SelectedFileObject");
            }
        }
        #endregion SelectedFileObject

        #region FileObjectCollection
        private ObservableCollection<FileObject> fileObjectCollection;
        public ObservableCollection<FileObject> FileObjectCollection
        {
            get { return fileObjectCollection; }
            set
            {
                if (value != this.fileObjectCollection)
                    fileObjectCollection = value;
                this.SetPropertyChanged("FileObjectCollection");
            }
        }
        #endregion FileObjectCollection
[Only registered and activated users can see links. Click Here To Register...]