Протяните пустой WPF ListView, чтобы занять оставшееся пространство

OP хотел две конкретные карты, но если вы хотите иметь динамическое количество карт на одной странице (например, список мест розничной торговли), вам нужно пройти еще один маршрут. Стандартная реализация API карт Google определяет карту как глобальную переменную, это не будет работать с динамическим числом карт. Вот мой код для решения этого без глобальных переменных:

function mapAddress(mapElement, address) {
var geocoder = new google.maps.Geocoder();

geocoder.geocode({ 'address': address }, function (results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        var mapOptions = {
            zoom: 14,
            center: results[0].geometry.location,
            disableDefaultUI: true
        };
        var map = new google.maps.Map(document.getElementById(mapElement), mapOptions);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
    } else {
        alert("Geocode was not successful for the following reason: " + status);
    }
});
}

Просто передайте идентификатор и адрес каждой карты функции для построения карты и отметьте адрес.

30
задан TalkingCode 28 May 2010 в 09:11
поделиться

2 ответа

Это не имеет никакого отношения к ListView. Это "вина" StackPanel. В StackPanel дочерние элементы всегда занимают только то пространство, которое им необходимо (в направлении ориентации StackPanel). Так устроена панель StackPanel. Вместо этого используйте DockPanel, где вы можете заставить последний элемент заполнить все оставшееся пространство с помощью LastChildFill="true" (true используется по умолчанию, поэтому нет необходимости указывать его явно).

<DockPanel Background="Green">
    <Button DockPanel.Dock="Top">Text</Button>
    <ListView DockPanel.Dock="Top">
        <ListView.View>
            <GridView>
                <GridViewColumn/>
            </GridView>
        </ListView.View>
    </ListView>     
</DockPanel>
37
ответ дан 27 November 2019 в 22:18
поделиться

Как насчет использования сетки? Для такой раскладки делаются сетки. DockPanel - тоже хорошее предложение.

  <Grid>  
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
     </Grid.RowDefinitions>

   <TextBlock Grid.Row="0" Text="row1"/>
   <Button Grid.Row="1" Content="row2"/>
   <ListView Grid.Row="2">
     <ListViewItem Content="Text"/>
     <ListViewItem Content="Text1"/>
     <ListViewItem Content="Text2"/>
   </ListView>
  </Grid>

Важной частью является Height = "*", это говорит о том, что строка должна занимать все доступное пространство, вы можете не указывать это, если хотите, так как это поведение по умолчанию.

17
ответ дан 27 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: