У меня есть listview, который заполняется через БД при помощи ItemSource. Я хочу при нажатии мышкой на элемент получить то, что там написано. Сразу говорю, пробовал string s = ListView.SelectedItem.text; выдаёт ошибку.
UPD: Прикладываю код
CS:
public List<Specialty> specs { get; set; }
public List<Groups> groups { get; set; }
public List<Subjects> subj { get; set; }
public Specialty specialtyShow { get; set; }
public Groups groupsShow { get; set; }
public Subjects subjectsShow { get; set; }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
specialtyShow = new Specialty();
groupsShow = new Groups();
subjectsShow = new Subjects();
specs = DB.Connection.Specialty.ToList();
groups = DB.Connection.Groups.ToList();
subj = DB.Connection.Subjects.ToList();
ListViewSpecialty.ItemsSource = specs;
ListViewGroups.ItemsSource = groups;
ListViewSubjects.ItemsSource = subj;
}
Xaml:
<ListView Name="ListViewSpecialty" Background="Transparent" Grid.Row="0" ItemsSource="{Binding Specialty}" SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Foreground="#FF8686" Content="{Binding Name}"></Label>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView Name="ListViewGroups" Background="Transparent" Grid.Row="1" ItemsSource="{Binding Groups}" SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Foreground="#FF8686" Content="{Binding Name}"></Label>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView Name="ListViewSubjects" Background="Transparent" Grid.Row="2" ItemsSource="{Binding Subjects}" SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Foreground="#FF8686" Content="{Binding Name}"></Label>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView.SelectedItem.text? Работайте со свойствами, привязками! Сделали свойствоpublic SomeClass SomeProp {get;set;}, сделали привязку<ListView SelectedItem="{Binding SomeProp}" ...>и все, радуетесь жизни без каких либо лишних проблем. Поймите вы то, что вам дали в предыдущем примере, напишите это сами, с нуля и тогда, подобных вопрос вовсе не будет. – EvgeniyZ Oct 23 '20 at 12:32<Label>в WPF не рекомендуется использовать, это наследие от WinForms, используйте<TextBlock>вместо него. Он ест меньше памяти, и быстрее работает. – aepot Oct 23 '20 at 12:50string s = ListView.SelectedItem.text; выдаёт ошибку.-SelectedItem- это вродеobject, который сначала надо скастовать в нужный тип (var item = (SomeClass)SelectedItem; item.text). – EvgeniyZ Oct 23 '20 at 12:51string s = ((Specialty)ListViewSpecialty.SelectedItem).Name. – aepot Oct 23 '20 at 12:58public MainWindow()- никогда не вставляйте свой код в конструктор, используйте обработчик событияWindow.Loadedвместо этого. – aepot Oct 23 '20 at 13:05