У меня есть простой объект «Location» со списком строковых свойств (City, Country, Zip и т. Д.), Которые я хочу отобразить под заголовками имени свойства.То, что у меня сейчас работает, выглядит так:
<TextBlock Text="City" Style="{StaticResource HeaderStyle}" />
<TextBlock Text="{Binding City}" />
<TextBlock Text="Country" Style="{StaticResource HeaderStyle}" />
<TextBlock Text="{Binding Country}" />
… и так далее.Текст заголовка совпадает с путем к свойству, и, естественно, я хочу избежать дублирования записи всех этих пар TextBlocks и вместо этого использовать ItemsControl и DataTemplates.
Я определил список строк в моемWindow.Resources и ItemsControl отображают по крайней мере заголовки правильно, но я не могу использовать динамическое значение для пути привязки:
<Window.Resources>
<x:Array x:Key="LocationKeys" Type="sys:String">
<sys:String>City</sys:String>
<sys:String>Country</sys:String>
<sys:String>Zip</sys:String>
</x:Array>
</Window.Resources>
...
<ItemsControl ItemsSource="{StaticResource LocationKeys}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}" Style="{StaticResource HeaderStyle}" />
<TextBlock Text="{Binding Path={Obviously I can't do this}}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl>
Так близко!Я не могу избавиться от ощущения, что мне здесь чего-то не хватает, и у меня достаточно проблем с поиском терминов для поиска, чтобы найти кого-то с той же проблемой - все попадания, которые я получаю до сих пор для «Динамического пути привязки»и т. д. обычно пытаются решить другую, совершенно иную проблему.
Я что-то упустил?Есть ли лучший способ?