Flex: запретить полосу прокрутки покрывать содержимое при автоматическом отображении

Существует, по крайней мере, один из возможных способов удаления grid.DataContext = this;

Добавить привязка к RelativeSource к самой сетке. В этом случае файл xaml будет выглядеть как



    
        
    

И код позади будет таким же

 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 using System.ComponentModel;

 namespace WpfApplication2
 {
    public partial class MainWindow : Window , INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();

            for (int i = 0; i < data.Length; i++)
            {
                 Points.Add(new Point(data[i], data1[i]));
            }
            NotifyPropertyChanged("Points");                
        }

        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

        public PointCollection Points { get { return _points; } }

        public event PropertyChangedEventHandler PropertyChanged;
        private PointCollection _points = new PointCollection();
        private short[] data = new short[] { 10, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210 };
        private short[] data1 = new short[] { 15, 14, 16, 13, 17, 12, 18, 11, 19, 10, 24 };


    }
}

10
задан Yaba 15 November 2008 в 17:52
поделиться

3 ответа

Это - ошибка. Посмотрите ошибку Flex verticalScrollPolicy для обходного решения.

16
ответ дан 3 December 2019 в 16:31
поделиться

Просто примечание стороны относительно этой проблемы: это - на самом деле не ошибка, но известный (и предназначенный?) поведение:

"Flex рассматривает полосы прокрутки в своих расчетах размеров, только если Вы явно устанавливаете политику прокрутки на ScrollPolicy.ON. Так, при использовании автоматической политики прокрутки (значение по умолчанию), полоса прокрутки перекрывает кнопки. Для предотвращения этого поведения можно установить height свойство для контейнера HBox или позволяет контейнеру HBox изменять размер путем установки основанной на проценте ширины. Помните, что изменение высоты контейнера HBox заставляет другие компоненты в Вашем приложении перемещать и изменять размер согласно их собственным правилам калибровки."

- От Калибровки Компонентов в справке Flex 3, под "Используя Полосы прокрутки"

4
ответ дан 3 December 2019 в 16:31
поделиться

Я тоже. Обычно у меня возникают проблемы с вертикальной полосой прокрутки в Flex, поэтому я предпочитаю использовать полосу прокрутки браузера для прокрутки всего приложения. Вы можете найти обходной путь здесь: Как изменить размер рабочей области Flex и использовать полосу прокрутки браузера .

Код, который я использую:

В Flex:

ExternalInterface.call("setInitialFlashHeight", this.height);

В моем HTML (JavaScript):

function setInitialFlashHeight(newHeight) {
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

И если вы хотите добавить (или удалить) некоторую высоту:

function addFlashHeight(height) {
    var divHeight;
    var obj = document.getElementById('my_flash');

    if (obj.offsetHeight) {
        divHeight = obj.offsetHeight;
    } else if (obj.style.pixelHeight){
        divHeight = obj.style.pixelHeight;
    }

    var newHeight = divHeight + height;
    document.getElementById('my_flash').style.height = newHeight + 'px';
}

Чтобы удалить, вы используете "- "вместо" + ".

0
ответ дан 3 December 2019 в 16:31
поделиться
Другие вопросы по тегам:

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