特定の項目プロパティを表示するためListView
のバインドItemsSource
とがあります。GridViewColumns
重要な部分の抜粋を次に示します。
<ListView Name="listView1" ItemsSource="{Binding Path=listItemCollection}" DataContext="{Binding ListItem}">
<ListView.View>
<GridView x:Name="gridViewMain">
<GridViewColumn x:Name="listViewItemNumberColumn" Width="50">
<GridViewColumnHeader>#</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="idTextBlock" KeyboardNavigation.IsTabStop="False" HorizontalAlignment="Center" Text="{Binding Path=Id}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn x:Name="listViewItemNameColumn" Width="500">
<GridViewColumnHeader>Name</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox x:Name="nameTextBox" TextChanged="nameTextBox_TextChanged" Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
...
ユーザーが選択した 内の特定のフィールド/テキストボックスに集中できるようにしたいListViewItem
。ListViewItem
このコードを使用して、特定のインデックスからを見つけることができます。
listView1.ItemContainerGenerator.ContainerFromIndex(i);
これまでのところ、すべて順調です。内のコンテンツに実際にアクセスしたいまでですListViewItem
。ListViewItem.Content
私が期待しているコントロールのグループを返す代わりに、カスタム クラスを返しますListItem
。そのクラスがどのように見えるかのスニペットを次に示します。
public class ListItem : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
public TextBlock idTextBlock;
public GridView gridViewMain;
public bool Selected { get; set; }
public string ItemName { get; set; }
nameTextBox
たとえば、テキストボックスコントロールに焦点を当てる方法に完全に迷っていますListViewItem.
nameTextBox
やなどのコントロールをidTextBlock
カスタムListItem
クラスに何らかの方法でリンクすることは可能ですか?