且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在wpf数据网格控件中包含列表框

更新时间:2022-10-21 16:12:23

你应该使用DataGridTemplateColumn而不是像这样的DataGridTextColumn:



 <   DataGrid  >  
< DataGrid.Columns >
< DataGridTemplateColumn >
< DataGridTemplateColumn.CellEditingTemplate >
< DataTemplate >
< DataGrid / >
< / DataTemplate >
< / DataGridTemplateColumn.CellEditingTemplate >
< DataGridTemplateColumn.CellTemplate >
< DataTemplate >
&lt ; TextBlock / >
< / DataTemplate >
< / DataGridTemplateColumn.CellTemplate >
< / DataGridTemplateColumn >
< / DataGrid。列 >
< / DataGr id >





希望这会有帮助


want to include listbox in wpf datagrid control when datgrid click the cell, as like as outlook calander.

My Xaml Code


<DataGrid Name="Grid1" Height="550" Width="850" AutoGenerateColumns="False" CanUserResizeRows="False" CanUserDeleteRows="False" CanUserAddRows="False" AreRowDetailsFrozen="False" SelectionUnit="CellOrRowHeader" SelectedCellsChanged="Grid1_SelectedCellsChanged" CellEditEnding="Grid1_CellEditEnding" LoadingRow="Grid1_LoadingRow" SelectionMode="Extended">
            <DataGrid.RowHeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">  
                        <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                                      AncestorType={x:Type DataGridRow}}, 
                                      Path=Item.Time}" FontSize="16"  />
                        <TextBlock Text="00" Foreground="#9493CF"   />
                    </StackPanel>
                </DataTemplate>
            </DataGrid.RowHeaderTemplate>
            <DataGrid.Style>
                <Style TargetType="DataGrid">
                    <Setter Property="AlternatingRowBackground" Value="LightYellow"/>
                </Style>
            </DataGrid.Style>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Sunday" Binding="{Binding Sunday}" />
                <DataGridTextColumn Header="Monday" Binding="{Binding Monday}" />
                <DataGridTextColumn Header="Tuesday" Binding="{Binding Tuesday}" />
                <DataGridTextColumn Header="Wednesday" Binding="{Binding Wednesday}" />
                <DataGridTextColumn Header="Thursday" Binding="{Binding Thursday}" />
                <DataGridTextColumn Header="Friday" Binding="{Binding Friday}" />
                <DataGridTextColumn Header="Saturday" Binding="{Binding Saturday}" />
            </DataGrid.Columns>
            <DataGrid.ContextMenu>
                <ContextMenu x:Name="LeftClickMenu">
                    <MenuItem Header="New Appointment" Click="MenuItem_Click"/>                  
                    <Separator/>
                    <MenuItem Header="Exit"/>
                </ContextMenu>
            </DataGrid.ContextMenu>
        </DataGrid>

You should use DataGridTemplateColumn instead of a DataGridTextColumn like this :

<DataGrid>
                                                            <DataGrid.Columns>
                                                                <DataGridTemplateColumn>
                                                                    <DataGridTemplateColumn.CellEditingTemplate>
                                                                        <DataTemplate>
                                                                            <DataGrid />
                                                                        </DataTemplate>
                                                                    </DataGridTemplateColumn.CellEditingTemplate>
                                                                    <DataGridTemplateColumn.CellTemplate>
                                                                        <DataTemplate>
                                                                            <TextBlock />
                                                                        </DataTemplate>
                                                                    </DataGridTemplateColumn.CellTemplate>
                                                                </DataGridTemplateColumn>
                                                            </DataGrid.Columns>
                                                        </DataGrid>



Hope this helps