#.net #wpf #xaml #binding #markup
#.net #wpf #xaml #привязка #разметка
Вопрос:
Что означают вложенные фигурные скобки в значениях атрибутов в разметке WPF / XAML? Как в следующем примере:
<ListBox ItemsSource="{Binding Source={StaticResource pictures}}">
Комментарии:
1. Почему это не может быть просто
<ListBox ItemsSource="{StaticResource pictures}">
?
Ответ №1:
Это привязывает поле ItemsSource
списка к StaticResource
вызываемому pictures
. Это просто вложение одного расширения разметки в другое.
Читайте о расширениях разметки в XAML здесь: http://msdn.microsoft.com/en-us/library/ms747254.aspx
Комментарии:
1. Хорошо, спасибо. Нельзя ли добиться того же эффекта, используя следующую упрощенную запись: <ListBox ItemsSource=»{StaticResource pictures}»>
2. Нет, когда вы привязываете данные к an
ItemsSource
, вам нужно указатьBinding
объект, поэтому вы должны использовать{Binding Source=...}
.3. @BoltClock: привязка не требуется. Любое свойство зависимости может иметь обычное присвоенное значение. Поскольку
Source
значение исправлено иPath
по умолчанию.
равно , предложенное Эндрю упрощение действительно идентично в этом случае. Это было бы неверно, еслиPath
бы было указано значение, отличное от значения по умолчанию.
Ответ №2:
Вложение нескольких расширений разметки поддерживается WPF, и каждое расширение разметки будет оцениваться в первую очередь.
<Setter Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
В этом случае сначала вычисляется оператор x:Static, который возвращает строку. Затем эта строка используется в качестве аргумента для DynamicResource .
итак, здесь
<ListBox ItemsSource="{Binding Source={StaticResource pictures}}">
он назначит изображения (могут быть коллекцией) itemsource списка
пожалуйста, посмотрите на это http://msdn.microsoft.com/en-us/library/ms747254.aspx#Nesting