【问题标题】:populating a listview within a datatemplate在数据模板中填充列表视图
【发布时间】:2016-06-01 15:48:51
【问题描述】:

我目前在访问 DataTemplate 中的列表视图时遇到问题,每一行都有其唯一的列表,例如 Sam 有某些需要点击事件的文档,我只是无法访问控件的名称。

通过研究,我发现了命令并使用了可视化树助手,但是无法访问列表以将数据与 itemsource 绑定。

 <DataGrid Name="dgUsers">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Client" Binding="{Binding name1}"/>
            <DataGridTextColumn Header="Land Line" Binding="{Binding landline}"/>         
        </DataGrid.Columns>
        <DataGrid.RowDetailsTemplate>
            <DataTemplate x:Name="datatemplate">
                <DockPanel Background="GhostWhite">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="200"/>
                            <ColumnDefinition Width="200"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>

                        <ListView x:Name="lvPipeline" Margin="10,82,10,156" Grid.Column="2" >
                            <ListView.View>
                                <GridView>

【问题讨论】:

    标签: wpf events datagrid datatemplate


    【解决方案1】:

    在 xaml 中,您只能在模板中访问模板中的命名控件,而不能从外部访问。 不确定我是否一直了解一般应用程序上下文,但我会使用 MVVM 并为 Sam 等对象创建模型和视图模型,并将 Sam 的文档列表放入视图模型中并将其绑定到数据模板中的列表框。

    我的方法是这样的:

    public class UserViewModel
    {
        public string Name {get;set}
        public ObservableCollection<string> Documents {get;set;}
        public string SelectedDocument {get;set}
    
    }
    
    
    
      <DataGrid Name="dgUsers" ItemsSource="{Binding Users}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Client" Binding="{Binding Name}"/>
                  <!--  <DataGridTextColumn Header="Land Line" Binding="{Binding LandLine}"/>    -->     
                </DataGrid.Columns>
                <DataGrid.RowDetailsTemplate>
                    <DataTemplate x:Name="datatemplate">
                        <DockPanel Background="GhostWhite">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="200"/>
                                    <ColumnDefinition Width="200"/>
                                    <ColumnDefinition/>
                                </Grid.ColumnDefinitions>
    
                                <ListView ItemsSource="{Binding Documents}" SelectedItem="{Binding SelectedDocument}" Margin="10,82,10,156" Grid.Column="2" >
                                     <ListView.View>
                                        <GridView>
    

    之后,您可以使用 SelectedDocument 属性并将其绑定到例如文档查看器。

    【讨论】:

    • 感谢您的回复,文档的绑定如何对每个用户都是唯一的?
    • 感谢您的回复,文档的绑定如何对每个用户都是唯一的?
    • 您必须将文档绑定到用户。您还可以创建一个文档类来获取每个文档的唯一 ID(来自数据库)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多