Avatar
Jakub Lásko[Saarix]:

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
 
Nahoru Odpovědět 30.5.2014 18:49
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jakub Lásko[Saarix]:

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]:

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:

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.