Он компилируется в C ++, потому что C ++ должен поддерживать динамическую инициализацию в любом случае, или вы не можете иметь локальные статические или нелокальные объекты с нетривиальными конструкторами.
Так как C ++ имеет такую сложность в любом случае, поддержка этой инициализации, как вы показываете, не сложнее добавить.
В C это было бы большой проблемой, потому что у C нет других причин поддерживать инициализацию при запуске программы (кроме тривиальной инициализации нуля ). В C исходные значения области видимости файла или локальных статических объектов всегда можно статически помещать в исполняемый образ.
Проблема заключается в том, что вы явно установили DataContext
вашего UserControl:
DataContext="{Binding Mode=OneWay, RelativeSource={RelativeSource Self}}
Удалите это назначение и запишите привязку ItemName
следующим образом:
<TextBlock Text="{Binding ItemName,
RelativeSource={RelativeSource AncestorType=UserControl}}"/>
или как это
<TextBlock Text="{Binding ItemName, ElementName=ItemRowControl}"/>
UserControl
, и поиск будет вверх, потому что он говоритAncestorType
– Harsh Baid 8 January 2015 в 08:02