Выполнить против содержимого против текста в WPF

Я создал очень простую библиотеку https://github.com/ravinderpayal/FooterJS

. Она очень проста в использовании. После включения библиотеки просто позвоните в эту строку кода.

footer.init(document.getElementById("ID_OF_ELEMENT_CONTAINING_FOOTER"));

Нижние колонтитулы могут быть динамически изменены путем вызова функции выше с другим параметром / id.

footer.init(document.getElementById("ID_OF_ANOTHER_ELEMENT_CONTAINING_FOOTER"));

Примечание. - Вы не должны изменять или добавлять CSS. Библиотека динамична, что подразумевает, что даже если размер экрана будет изменен после загрузки страницы, он сбросит положение нижнего колонтитула. Я создал эту библиотеку, потому что CSS решает проблему некоторое время, но когда размер отображения значительно меняется, от рабочего стола до планшета или наоборот, они либо перекрывают содержимое, либо больше не остаются липкими.

Другое решение - это CSS Media Queries, но вы должны вручную писать разные стили CSS для разных размеров экранов, в то время как эта библиотека выполняет свою работу автоматически и поддерживается всеми базовыми браузерами, поддерживающими JavaScript.

Редактирование решения CSS:

@media only screen and (min-height: 768px) {/* or height/length of body content including footer*/
    /* For mobile phones: */
    #footer {
        width: 100%;
        position:fixed;
        bottom:0;
    }
}

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

И это кажется лучшим решением, чем JavaScript / library one.

17
задан H. Pauwelyn 20 December 2017 в 17:20
поделиться

2 ответа

Элемент управления со свойством Text может принимать только строку и отображается определенным образом, обработанным этим элементом управления. Примерами таких элементов управления являются TextBlock и TextBox .

Элементы управления со свойством Content могут иметь буквально любой object, установленный для этого свойства. Эти элементы управления обычно передают значение в свойство Content в ContentPresenter . В документации ContentPresenter Class есть этот соответствующий блок:

ContentPresenter использует следующую логику для отображения контента:

  • Если свойство ContentTemplate в ContentPresenter установлен, ContentPresenter применяет этот DataTemplate к свойству Content и отображает результирующий UIElement и его дочерние элементы, если таковые имеются. Для получения дополнительной информации об объектах DataTemplate см. Обзор шаблонов данных.
  • Если свойство ContentTemplateSelector в ContentPresenter установлено, ContentPresenter применяет соответствующий DataTemplate к свойству Content, и в результате отображаются результирующий UIElement и его дочерние элементы, если таковые имеются.
  • Если существует DataTemplate, связанный с типом Content, ContentPresenter применяет этот DataTemplate к свойству Content и отображает результирующий UIElement и его дочерние элементы, если таковые имеются.
  • Если Content является объектом UIElement, отображается UIElement. Если элемент UIElement уже имеет родителя, возникает исключение.
  • Если существует TypeConverter, который преобразует тип контента в UIElement, ContentPresenter использует этот TypeConverter, и отображается результирующий UIElement.
  • Если существует TypeConverter, который преобразует тип Content в строку, ContentPresenter использует этот TypeConverter и создает TextBlock для хранения этой строки. Отображается текстовый блок.
  • Если содержимое является элементом XmlElement, значение свойства InnerText отображается в TextBlock.
  • ContentPresenter вызывает метод ToString для Content и создает TextBlock для хранения строки, возвращаемой ToString. Отображается текстовый блок.

В случае класса TextBlock у вас есть возможность либо установить свойство Text, либо установить свойство Inlines. Установка Text будет просто отображать текст. Настройка Inlines (которая используется по умолчанию, если вы помещаете содержимое в тело тега xaml) позволяет форматировать текст. Например, вы можете использовать Run с его FontWeight , установленным в Bold, чтобы сделать определенное слово или фразу жирным в предложении. Вы можете использовать LineBreak , чтобы вставить новую строку. Вы даже можете использовать InlineUIContainer для вставки пользовательских элементов интерфейса в текст. Все, что происходит от класса Inline , может входить в эту коллекцию.

TextBlock предназначен для простых бит форматированного текста. Если вам нужны еще более мощные функции стиля документа, вы можете обратиться к FlowDocument , который используется такими элементами управления, как RichTextBox , FlowDocumentScrollViewer и FlowDocumentReader [ 1 125]. [1 139]

Что касается разницы между <TextBlock Text="something" /> и <TextBlock><TextBlock.Text>something</TextBlock.Text></TextBlock>, то на самом деле разницы нет. Это просто два разных способа, которыми вы можете установить свойства для чего-либо в файле xaml. Вторая версия обычно используется только тогда, когда вам нужно определить дополнительные элементы внутри сеттера.

28
ответ дан Xavier 20 December 2017 в 17:20
поделиться

Короткое слово о «элементах свойств»

Это просто дополнительное замечание о великолепном ответе Ксавье.

На самом деле нет большой разницы между:

<TextBlock Text="something" />

и

<TextBlock><TextBlock.Text>something</TextBlock.Text></TextBlock>

Это потому, что свойство Text имеет тип String, который является простым типом, который может быть установлен непосредственно как Text="something".

Последний синтаксис в вышеприведенном примере называется «элементами свойств». Обычно используется при установке атрибута элемента в сложный тип.

Пример:

<Button>
  <Button.Content>
     <Rectangle Height="20", Width="20", Fill="Black"/>
  </Button.Content>
</Button>

В этом примере вы можете установить «Прямоугольник», возможно, напрямую, без использования Button.Content, но для других примеров синтаксис может использоваться для установки атрибута сложного типа. .

4
ответ дан Martin 20 December 2017 в 17:20
поделиться
Другие вопросы по тегам:

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