abdou_31 Ответов: 3

Как привязать данные в текстовом блоке внутри listview C# WPF?


Я пытаюсь привязать данные внутри listview , содержащего textblock , проблема в том, что я могу показать только первый элемент модели ( первую строку listview), я хотел бы привязать все данные в listview.

Что я уже пробовал:

<ListView x:Name="listviewgrd" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >


                          <Grid HorizontalAlignment="Right" MinWidth="606" MinHeight="10">
                              <Grid.ColumnDefinitions>
                                  <ColumnDefinition Width="300*"/>
                                  <ColumnDefinition Width="100*"/>
                                  <ColumnDefinition Width="100*"/>
                                  <ColumnDefinition Width="100*"/>
                              </Grid.ColumnDefinitions>

                          <TextBlock x:Name="servicename" Text="{Binding Name ,Mode=TwoWay, NotifyOnTargetUpdated=True}" Grid.Column="3" FlowDirection="RightToLeft" Grid.ColumnSpan="1" />
                          <TextBlock Text="{Binding Price,Mode=TwoWay, NotifyOnTargetUpdated=True}" Grid.Column="2" HorizontalAlignment="Center" FlowDirection="RightToLeft"  Grid.ColumnSpan="1" />
                          <TextBlock Text="{Binding Status,Mode=TwoWay, NotifyOnTargetUpdated=True}" Grid.Column="1" HorizontalAlignment="Center" FlowDirection="RightToLeft" Grid.ColumnSpan="1" />
                          <TextBlock Text="{Binding Parent Name,Mode=TwoWay, NotifyOnTargetUpdated=True}" Grid.Column="0" HorizontalAlignment="Center" Foreground="#FF62013C"  FlowDirection="RightToLeft"  Grid.ColumnSpan="3" />
                      </Grid>




                      <ListView.Resources>
                          <Style TargetType="ListViewItem">
                              <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                              <Setter Property="VerticalContentAlignment" Value="Stretch"/>
                          </Style>
                      </ListView.Resources>
                  </ListView>



listviewgrd.DataContext = person.Status;

		    
                    

3 Ответов

Рейтинг:
8

abdou_31

Спасибо всем, я перешел на listView с GridView, и теперь он работает


Рейтинг:
1

Chris Copeland

Ты это хочешь сказать person.Status это IObservableCollection<> а твой ListView показывает только одну строку?

Если это так, то, вероятно, потому, что вы не используете ItemTemplate свойство правильно, которое используется для указания того, как отображается каждый элемент:

<ListView ..>
 <ListView.ItemTemplate>
  <DataTemplate>
    ..
  </DataTemplate>
 </ListView.ItemTemplate>
</ListView>

В приведенном вами примере вы фактически переопределяете то, что содержание ListView содержит, поэтому вы видите его только как одну строку.


Рейтинг:
0

Sandeep Mewara

Не знаю, как много вы знаете о MVVM. Прочитать/узнать об этом:
Model-View-ViewModel (MVVM) объяснено[^]
MVVM для начинающих[^]

С помощью MVVM вы свяжете свой listview с моделью данных, которая имеет тип коллекции. Эта коллекция будет иметь некоторое свойство на уровне элемента, которое можно использовать для привязки вашего текстового блока.

Образец: Элемент управления ListView, привязки данных и свойства itemtemplate - полный в WPF учебник[^]

Попробуйте.