Я использую много привязок в XAML, и иногда я использую path = в привязке, а иногда и нет. В каких случаях мне нужен путь = и когда я могу опустить это?
Каково использование Path = в XAML?
Ответ 1
Он всегда может быть опущен, поскольку это свойство по умолчанию расширения Binding XAML. Он явно указывается явно для ясности при использовании нескольких свойств.
Ответ 2
Это связано с тем, что класс Binding имеет конструктор по умолчанию, используемый, когда у вас есть привязки типа {Binding FallbackValue='HelloWorld', Path=MyProperty}
и конструктор с единственным аргументом Path.
Итак, когда есть список пар свойств/значений, привязка создается как
new Binding(){
Path="MyProperty"
ElementName="MyElement"
}
Вторая форма используется для привязок типа {Binding MyProperty, ...}
. В этом случае привязка создается как
new Binding("MyProperty"){
ElementName = "MyElement",
...
}
Он всегда корректен (и, возможно, более прав), чтобы указать Path =, но вы можете обойтись без него.
Ответ 3
Путь используется для указания имени свойства базового объекта для привязки.
Когда вы привязываетесь к DataContext, вы можете опустить Path:
{Binding MyProperty}
{Binding Path=MyProperty}
Когда вам нужно указать источник, отличный от DataContext, вы можете использовать Source
, RelativeSource
или ElementName
для обращения к объекту, поэтому вам обычно нужно указать, к какому свойству его вы хотите установите привязку:
<Button Background="{Binding ElementName=refButton, Path=Background}"/>
<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
Ответ 4
Вы всегда можете опустить Path = при написании пути к свойству непосредственно позади инструкции Binding.
{Binding MyProperty}
совпадает с
{Binding Path=MyProperty}
Когда вы встраиваете путь к свойству, вам нужно указать его с помощью Path =
{Binding FallbackValue='HelloWorld', Path=MyProperty}
Ответ 5
Как сказал Ричард Салай, это необязательно, если это первое свойство. Но, по моему описанию, его легче читать, если вы введете свойство path. Также улучшается выделение кода.