В WPF, как создать ярлык, например ItemsControl/Selector? Мне нужен элемент управления, который похож на метку, но может подавать коллекцию данных из свойства ItemsSource и дублировать текст в соответствии с свойством DisplayMemberPath. Пользователь не может изменить значение. Это только для отображения.WPF-метка как ItemsControl/Selector
0
A
ответ
0
Все, что вам нужно, это ItemsControl с использованием StackPanel в качестве ItemsPanel, что-то вроде этого:
Xaml
<Grid>
<Grid.DataContext>
<local:TestViewModel/>
</Grid.DataContext>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ItemText}" Margin=5/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Или, если вы хотите использовать DisplayMemberPath вы могли бы
<Grid>
<Grid.DataContext>
<local:TestViewModel/>
</Grid.DataContext>
<ItemsControl ItemsSource="{Binding Items}" DisplayMemberPath="ItemText">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
Просмотр модели
public class TestViewModel
{
public TestViewModel()
{
Items = new List<TestItem>
{
new TestItem{ItemText = "One"},
new TestItem{ItemText = "Two"},
new TestItem{ItemText = "Three"},
};
}
public IEnumerable<TestItem> Items { get; set; }
}
public class TestItem
{
public string ItemText { get; set; }
}
Простой (немного Hacky) решение для отображения одного выбранного элемента текста является стиль Окно списка
<Grid>
<Grid.DataContext>
<local:TestViewModel/>
</Grid.DataContext>
<Grid.Resources>
<Style TargetType="ListBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<TextBlock Text=
"{Binding RelativeSource=
{RelativeSource Mode=TemplatedParent},
Path=SelectedItem.ItemText}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedIndex="2" />
</Grid>
Лучшим решением было бы создать пользовательский элемент управления на основе Selector, и сделать управление templatable ,
Смежные вопросы
- 1. как писать рамочный объект запроса, как, как ** как «поясного%» **
- 2. Haxe как синтаксис, как использовать AS3 как
- 3. Как сериализовать HashMap как ArrayList как JSON?
- 4. Как использовать linqkit как
- 5. Как работать как администратор?
- 6. Как отображать как Google
- 7. Как импортировать `как <-`?
- 8. Как отобразить «\ ,, /» как строку
- 9. Facebook как как checkbox?
- 10. SQL Как и как
- 11. Как slideUp как одометр
- 12. Как изменить, как кнопка?
- 13. Как войти как лидер?
- 14. как печатать как 1,2,5,10,17,26,37,50,65
- 15. Как создать кнопку, как
- 16. Как декретировать как $ dec?
- 17. Как setenv как PWD?
- 18. Как узнать, как продвигается Jquery?
- 19. Как преобразовать дату как. POSIXct?
- 20. Как использовать интерфейс как параметр?
- 21. AS3: Как использовать оператор «как»?
- 22. C# - как читать/как строку?
- 23. Как читать байты как строку
- 24. Как использовать как выражение DataTable
- 25. как обеспечить аргумент как Союз?
- 26. Как реализовать сеанс как stackoverflow?
- 27. Как установить приложение как стандартное?
- 28. Как установить PNG как MAP?
- 29. Как вернуть ArrayList как SoapObject
- 30. Как передать управление как переменная
Что делать, если мне нужно отображать только SelectedItem? Как поле со списком, но отображаемое как текстовый блок – linquize