0

我有一个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.

是否有可能以某种方式将 和 等控件链接nameTextBoxidTextBlock我的自定义ListItem类?

4

1 回答 1

0

ListView SelectedItem 中有一个属性。您需要将其绑定到。

在你看来

<ListView Name="listView1" ItemsSource="{Binding Path=listItemCollection}" SelectedItem="{Binding SelectedListItem}" DataContext="{Binding ListItem}">

在你有 listItemCollection 的类中,添加一个 SelectedListItem 变量。

public ListViewItem SelectedListViewItem {get; set;}

编辑:

删除列表视图。使用 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;}
}
于 2013-03-18T05:24:07.590 回答