2015-02-19 2 views
0

Я бы добавил к моему примеру некоторый текст (Temp is: X Celcius degree), теперь мой TextBlock возвращает только цифры. Помогите пожалуйстаTextblock FormatString DataContext

<TextBlock 
    x:Name="aktualtemp" 
    Text="{Binding , StringFormat='Temp is: \{0\} Celcius degree'}"/> 

и это моя линия от функции ("разбор xml").

aktualtemp.DataContext = document.Element("data").Element("weather").Element("hourly").Element("tempC").Value; 

Что я должен написать здесь после привязки? Какой источник, функция, элемент? Text="{Binding ? ,...}

+0

Глядя на ваш «DataContext», я обеспокоен тем, что вы делаете больше работы, чем вам нужно. Используя свойство 'DataContext' так, как вы, вы не можете в полной мере использовать привязку данных. Как только ваши данные изменятся, вам нужно будет повторно использовать «DataContext». WPF позволяет автоматически распространять измененный пользовательский интерфейс. –

+0

Примечание стороны: пожалуйста, не отправляйте тот же вопрос несколько раз. – Bolu

ответ

0

Я рекомендую вам взглянуть на Data Binding Overview Это должно помочь вам понять DataContexts немного лучше.

В основном DataContext - это объект, который обычно имеет свойства CLR, он содержит требуемую модель данных. В WPF DataContext наследуется родительскими элементами.

Как правило, я устанавливаю DataContextMainWindow, и пусть все мои UIElements унаследуют его. Затем для вашей привязки вы должны указать Path свойства CLR, с которым вы хотите привязать. В вашем случае вы пытаетесь указать Path, используя свойство default по умолчанию. Другими словами, предложение привязки предполагает, что первым свойством является ваше имя свойства CLR. Если вы хотите позже указать имя свойства, вы должны использовать Path=CLR_property_name_here в своем предложении привязки.

0

Просто BindingText к его DataContext, как для формата, просто написать его так, как вы хотите:

Пожалуйста, обратите внимание: Не используйте ` или \, просто написать в виде обычного текста ,

<TextBlock 
     x:Name="aktualtemp" 
     Text="{Binding, StringFormat=Temp is: {0} Celcius degree}"/> 
+0

Мне пришлось удалить запятую, и все работает так, как должно. Спасибо :) – Marcin

Смежные вопросы