WPF - początki - wczytanie listy

0

Witajcie, zaczynam dopiero zabawę z WPFem i XAMLem. Chciałbym osiągnąć taki efekt, by po naciśnieciu przycisku "Wczytaj" do DataGrid została wczytana lista, którą binduję przez "Products". Kontrolki , które znajdują się w kodzie XAML:

        <DataGrid ItemsSource="{Binding Products, Source={StaticResource vm}}" HorizontalAlignment="Left" Height="374" Margin="186,27,0,0" VerticalAlignment="Top" Width="399"/>


        <Button  Content="Wczytaj" HorizontalAlignment="Left" Height="30" Margin="50,95,0,0" VerticalAlignment="Top" Width="87" Command="{Binding Read, Source={StaticResource vm}}" />

W tej chwili to wygląda tak, że po odpaleniu programu lista od razu wczytuje mi się do do DataGrid, a chciałbym by zostało to zrobione dopiero po naciśnięciu przycisku "Wczytaj". Chciałbym to zrobić poprzez Bindowanie , bo nie chciałbym mieszać w CodeBehind. Może problem jest banalny, ale dopiero zaczynam z WPFem więc proszę o wyrozumiałość :) Z góry dzięki.

1

Skoro bindujesz listę (Products) i chcesz aby na początku nic w niej nie było to musisz mieć po prostu pustą listę, a dopiero dodać do niej wartości w zdarzeniu (click) tego przycisku.

0

OK, czyli mam pustą listę:

        <DataGrid  HorizontalAlignment="Left" Height="374" Margin="186,27,0,0" VerticalAlignment="Top" Width="399"/>

Tylko jak dodać do operacji Click zdarzenie, które wypełni listę?

<Button  Content="Wczytaj" HorizontalAlignment="Left" Height="30" Margin="50,95,0,0" VerticalAlignment="Top" Width="87" Command="{Binding Read, Source={StaticResource vm}}" Click = ????????? />
1

Nie zrozumiałeś. Nie chodzi o usunięcie bindingu w xaml tylko o ViewModel z pustą listą Products (bo z twojej wypowiedzi o nie mieszaniu w CodeBehind rozumiem, że korzystasz z wzorca MVVM). Następnie w za pomocą command buttona wypełniasz tę listę w ViewModel.
Żeby zmiany były widoczne w widoku to musisz zmienić List<Products> na ObservableCollection<Products>.
https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example
https://stackoverflow.com/questions/27679829/mvvm-binding-command-with-observable-collection-to-listbox-and-taking-values-f

0

Tak jak @Redivius pisał, chodziło mi o zmiany ViewModel a nie w XAMLu.

0

OK, czyli do Buttona dodaję zdarzenie , które wypełnia ObservableCollection<Products>. A do DataGird binduję po prostu samą kolekcję. Dobrze rozumiem? :)

0
polgol napisał(a):

OK, czyli do Buttona dodaję zdarzenie , które wypełnia ObservableCollection<Products>. A do DataGird binduję po prostu samą kolekcję. Dobrze rozumiem? :)

Tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1