0
WPFでは、ItemsControl/Selectorのようなラベルを作成する方法は?コントロールはラベルのように見えますが、ItemsSourceプロパティからデータのコレクションをフィードし、DisplayMemberPathプロパティに従ってテキストを表示することができます。ユーザーは値を変更できません。表示専用です。ItemsControl/SelectorのようなWPFラベル
WPFでは、ItemsControl/Selectorのようなラベルを作成する方法は?コントロールはラベルのように見えますが、ItemsSourceプロパティからデータのコレクションをフィードし、DisplayMemberPathプロパティに従ってテキストを表示することができます。ユーザーは値を変更できません。表示専用です。ItemsControl/SelectorのようなWPFラベル
必要なのは、そのItemsPanel、このようなものとしてのStackPanelを使用してのItemsControlです:
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; }
}
テキストの単一選択項目を表示するための
簡単な(少しハック)ソリューションは、より良い解決策は、セレクタに基づいてカスタムコントロールを作成すること、および制御、鋳型になるだろう、リストボックス
<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>
のスタイルです。
SelectedItemのみを表示する必要がある場合はどうすればいいですか?コンボボックスと同様ですが、テキストブロックとして表示されます – linquize