Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jakub Lásko[Saarix]:30.5.2014 18:40

Zdravím mám menší zádrhel v bindingu do ListView komponenty.

<ListView x:Name="lsvWordsView" HorizontalAlignment="Left" Height="263" Margin="10,171,0,0" VerticalAlignment="Top" Width="572"
                  ItemsSource="{Binding Source=words}">
            <ListView.View>
                <GridView AllowsColumnReorder="True"
                          ColumnHeaderToolTip="Words">
                    <GridViewColumn DisplayMemberBinding=
                                    "{Binding Path=Word}"
                                    Header="Slovo" Width="150"/>
                    <GridViewColumn DisplayMemberBinding=
                                    "{Binding Path=Translation}"
                                    Header="Překlad" Width="400"/>
                </GridView>
            </ListView.View>
        </ListView>

Jde o to, že do ItemsSource se normálně ten list nabinduje, ale mám problém s tím, jak dostat jednotlivé vlastnosti položek v listu do těch sloupců.

Odpovědět
30.5.2014 18:40
Časem je vše možné.
Avatar
Lako
Člen
Avatar
Odpovídá na Jakub Lásko[Saarix]
Lako:30.5.2014 18:49

Hoď sem tvůj viewModel

 
Nahoru Odpovědět
30.5.2014 18:49
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jakub Lásko[Saarix]:30.5.2014 18:50

Tak nakonec to bylo tím že to nereagovalo na změny v listu, teď už to funguje.

Jinak objekty co zobrazuji jsou z této třídy:

public class Words : INotifyPropertyChanged
    {
        private string word;
        public string Word
        {
            get { return word; }
            set { word = value; ValueChanged("Word"); }
        }

        private string[] translation;
        public string[] Translation
        {
            get { return translation; }
            set { translation = value; ValueChanged("Translation"); }
        }

        public Words(string word, params string[] translation)
        {
            Word = word;
            Translation = translation;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void ValueChanged(string property)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
Editováno 30.5.2014 18:53
Nahoru Odpovědět
30.5.2014 18:50
Časem je vše možné.
Avatar
Jakub Lásko[Saarix]:30.5.2014 19:14

Hm ale nějak se tomu bindingu nechce změnit, když přidám položku a neupdatuji source v kódu, tak se žádné změny v komponentě nestanou. :(

Nahoru Odpovědět
30.5.2014 19:14
Časem je vše možné.
Avatar
Lako
Člen
Avatar
Odpovídá na Jakub Lásko[Saarix]
Lako:30.5.2014 20:04

Tak buď nastav:

UpdateSourceTrigger="PropertyChanged"

a nebo přidej twoWay binding

A jestli budeš chtít udělat aby se ti změnil počet poležek v tom Listview, tak budeš words (to je předpokládám nějaký List objektu Words) muset udělat jako ObservableCollec­tion

nepohcopil jsem přesně co za chybu tam máš, ale výše zmíněné tři věci při neauktalizaci obsahu mezi gui a viewmodelem většinou pomohou

 
Nahoru Odpovědět
30.5.2014 20:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.