Какая польза от Path = в XAML? - PullRequest
22 голосов
/ 17 февраля 2012

Я использую много привязок в XAML, и иногда я использую path = в привязке, а иногда нет. В каких случаях мне нужен путь = и когда я могу его опустить?

Ответы [ 5 ]

13 голосов
/ 17 февраля 2012

Его всегда можно опустить, так как это свойство по умолчанию для расширения XAML Binding. Это явно указано только для ясности, когда используются несколько свойств.

12 голосов
/ 17 февраля 2012

Это связано с тем, что класс Binding имеет конструктор по умолчанию, используемый, когда у вас есть привязки типа {Binding FallbackValue='HelloWorld', Path=MyProperty}, и конструктор с единственным аргументом Path.

Таким образом, при наличии списка пар свойство / значение привязка создается как

new Binding(){
  Path="MyProperty"
  ElementName="MyElement"
}

Вторая форма используется для привязок, таких как {Binding MyProperty, ...}.В этом случае привязка создается как

new Binding("MyProperty"){
  ElementName = "MyElement",
  ...
}

Всегда правильно (и, возможно, более правильно) указывать Path =, но вы можете обойтись без него.

7 голосов
/ 17 февраля 2012

Путь используется для указания имени свойства базового объекта, к которому необходимо привязаться.

При привязке к DataContext вы можете опустить Путь:

{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 голосов
/ 17 февраля 2012

Вы всегда можете опустить Path =, когда вы пишете путь к свойству непосредственно за оператором Binding.

{Binding MyProperty}

совпадает с

{Binding Path=MyProperty}

Когда вы встраиваетеПуть к свойству необходимо указать с помощью Path =

{Binding FallbackValue='HelloWorld', Path=MyProperty}
3 голосов
/ 17 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...