Невозможно динамически привязать данные в многостолбцовом ListView в WPF (VS2010) - PullRequest
1 голос
/ 24 января 2011

Мой Xaml:

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" HorizontalAlignment="Left" Name="listViewResult" VerticalAlignment="Top" Width="Auto">
            <ListView.View>
                <GridView x:Name="gridResult">
                    <GridViewColumn Width="Auto" Header="Server" />
                    <GridViewColumn Width="Auto" Header="Value"/>
                    <GridViewColumn Width="Auto" Header="Availability"/>
                    <GridViewColumn Width="Auto" Header="Status"/>
                </GridView>
            </ListView.View>
        </ListView>

И C # -код:

listViewResult.Items.Clear();      

listViewResult.Items.Add(new { Server = "test1", Value = "ABX", Availability = "Yes", Status = "No"});   

Но значение не отображается в Multi Column Listview

Ответы [ 2 ]

4 голосов
/ 24 января 2011

Это потому, что вы нигде не указали, что отображать.Вы можете указать GridViewColumn.CellTemplate или просто использовать DisplayMemberBinding, чтобы указать, какое свойство объекта данных вы хотите отобразить:

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" HorizontalAlignment="Left" Name="listViewResult" VerticalAlignment="Top" Width="Auto">
    <ListView.View>
        <GridView x:Name="gridResult">
            <GridViewColumn Width="Auto" Header="Server" DisplayMemberBinding="{Binding Server}" />
            <GridViewColumn Width="Auto" Header="Value" DisplayMemberBinding="{Binding Value}"/>
            <GridViewColumn Width="Auto" Header="Availability" DisplayMemberBinding="{Binding Availability}"/>
            <GridViewColumn Width="Auto" Header="Status" DisplayMemberBinding="{Binding Status}"/>
        </GridView>
    </ListView.View>
</ListView>
2 голосов
/ 24 января 2011

Заголовок - это то, что отображается как заголовок столбца. Если вам нужен только текст, связанный с данными, вам нужно добавить DisplayMemberBinding, чтобы фактически поместить данные в столбец.

<ListView Grid.Column="2" Grid.Row="2" Height="Auto" 
           HorizontalAlignment="Left" 
           Name="listViewResult" 
           VerticalAlignment="Top" Width="Auto">
            <ListView.View>
                <GridView x:Name="gridResult">
                    <GridViewColumn Width="Auto" 
                                    Header="Server" 
                                    DisplayMemberBinding="{Binding Server}"/>
                    <GridViewColumn Width="Auto" 
                                    Header="Value"
                                    DisplayMemberBinding="{Binding Value}"/>
                    <GridViewColumn Width="Auto" 
                                    Header="Availability"
                                    DisplayMemberBinding="{Binding Availability}"/> 
                    <GridViewColumn Width="Auto" 
                                    Header="Status"
                                    DisplayMemberBinding="{Binding Status}"/>
                </GridView>
            </ListView.View>
        </ListView>

Альтернативой является создание CellTemplate с DataTemplate, если вы хотите больше контроля над внешним видом. Например:

       <GridViewColumn>
            <GridViewColumnHeader Content="Status" />
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Margin="2,4">
                        <Image Source="Resources\SomePicture.ico" 
                               Height="24" 
                               Width="24" 
                               VerticalAlignment="Center"  />
                        <TextBlock Text="{Binding Status}" 
                                   Margin="2, 4" 
                                   VerticalAlignment="Center" />
                    </StackPanel>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...