Я использую ListBox в сочетании с ObservableCollection. Контент устанавливается с помощью TemplateSelector (TextBlock или Label). Текст должен быть отформатирован (например, с Run-Tags в Code-behind), но я не могу получить доступ к пунктам. Есть ли решение получить элементы?
Я пробовал использовать OfType <>, но это работает только на панелях. Я искал атрибут детей, но для ListBoxes его нет. Установка свойства Name через привязку невозможна для UId и Name.
IEnumerator для LogicalChildren не работает и выполняет итерацию по всему контенту каждый раз, когда добавляется новый элемент, это не так оптимально. Вот минимальный пример.
<Window.Resources>
<DataTemplate x:Key="TextBlockTemplate">
<StackPanel>
<TextBlock />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="LabelTemplate">
<StackPanel>
<Label/>
</StackPanel>
</DataTemplate>
<local:myTemplateSelector x:Key="myTemplateSelector" x:Name="myTemplateSelector" TextBlockTemplate="{StaticResource TextBlockTemplate}" LabelTemplate="{StaticResource LabelTemplate}"/>
</Window.Resources>
<Grid Margin="0">
<ListBox Name="mylist" Grid.Row="3"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding _listEntries}"
ItemTemplateSelector="{StaticResource myTemplateSelector}"
>
</ListBox>
</Grid>
Привет и спасибо:)