我有一个带有ListView
和ItemsSource
的{{1}}来显示给定的商品属性。以下是重要部分的片段:
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
类?
答案 0 :(得分:0)
ListView SelectedItem中有一个属性。你需要绑定它。
在你看来
<ListView Name="listView1" ItemsSource="{Binding Path=listItemCollection}" SelectedItem="{Binding SelectedListItem}" DataContext="{Binding ListItem}">
在你的listItemCollection类中,添加一个SelectedListItem变量。
public ListViewItem SelectedListViewItem {get; set;}
修改强>
删除ListView。使用DataGridOnly。
XAML:
<DataGrid ItemsSource="{Binding MyItems}" SelectedItem="{Binding SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="175" />
<DataGridTextColumn Binding="{Binding Path}" Header="Path" Width="75" />
</DataGrid.Columns>
</DataGrid>
视图模型:
ObservableCollection<MyItem> MyItems {get; set;}
MyItem SelectedItem {get; set;}
public class MyItem : INotifyPropertyChanged
{
public string Name {get; set;}
public string Path {get; set;}
}