【问题标题】:Pass informations between two ColumnDefinition?在两个 ColumnDefinition 之间传递信息?
【发布时间】:2022-01-01 09:09:36
【问题描述】:

我很难理解如何将选定单元格的详细信息显示到第二个 ColumnDefinition 中。详细信息属性通过 KeyValuePair 设置进入可观察字典。

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

 <DataGrid ItemsSource="{Binding Persons.Values}" AutoGenerateColumns="False" Grid.Column="0">
  <DataGrid.Columns>
                <DataGridTemplateColumn SortMemberPath="Key.Name" Header="K1 Regler"  Width="*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Border Background="Azure">
                                <Grid>
                                    <Label Foreground="Black" Content="{Binding Path=Key.Name}" Width="Auto" HorizontalContentAlignment="Center"/>
                                </Grid>
                            </Border>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
  </DataGrid.Columns>
</DataGrid>
</Grid>

如果我选择了其中一个 Datagrid 单元格,如何在 ColumnDefinitions 之间传递数据?

【问题讨论】:

  • 您是指“选定的列”吗?通常你选择一个/o行的单元格...
  • 通常你会通过视图模型进行通信。并让两列(或更好:它们的单元格)绑定到相同的数据,a/o 也设置该数据。例如一些“SelectedItem”属性...
  • 我怎样才能实现它?我的想法是使用 ItemSource Persons.Values 在 Datagrid 的第一个 ColumnDefinition 上选择一个单元格,并在带有 TextBox 的第二个 ColumnDefinition 上显示 Value.Name 属性。
  • 通常在 DataGrid 中,同一行的所有单元格共享相同的数据对象,因此例如,您可以在第一列中显示“FamilienName”,在第二列中显示“VorName”,或者诸如此类,您只需绑定到这两个属性,但没有什么特别/复杂的。
  • 你有两个数据网格吗?并且您希望在第一个网格中选择的数据也显示在第二个 GRID 中(更详细?)

标签: c# wpf dictionary datagrid observable


【解决方案1】:

您是否尝试过绑定到DataGrid 元素的SelectedItem

检查下面的TextBlock,如果您正在寻找它,您可以将其替换为DataGrid 并绑定到ItemsSource

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <DataGrid x:Name="PersonsGrid" ItemsSource="{Binding Persons.Values}" AutoGenerateColumns="False" Grid.Column="0">
        <DataGrid.Columns>
            <DataGridTemplateColumn SortMemberPath="Key.Name" Header="K1 Regler"  Width="*">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Border Background="Azure">
                            <Grid>
                                <Label Foreground="Black" Content="{Binding Path=Key.Name}" Width="Auto" HorizontalContentAlignment="Center"/>
                            </Grid>
                        </Border>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

    <TextBlock Text="{Binding ElementName=PersonsGrid, Path=SelectedItem}" Grid.Column="1"/>
</Grid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多