如何在wpf数据网格控件中包含列表框 [英] How to include listbox in wpf datagrid control

查看:84
本文介绍了如何在wpf数据网格控件中包含列表框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

想要在datgrid点击单元格时在wpf datagrid控件中包含listbox,就像outlook calander一样。



我的Xaml代码





< DataGrid Name =   Grid1高度=   550宽度=   850 AutoGenerateColumns =   False CanUserResizeRows =   False CanUserDeleteRows =   False CanUserAddRows =   False AreRowDetailsFrozen =   False SelectionUnit =   CellOrRowHeader SelectedCellsChanged =   Grid1_SelectedCellsChanged CellEditEnding =   Grid1_CellEditEnding LoadingRow =   Grid1_LoadingRow SelectionMode =  扩展 >  
< DataGrid.RowHeaderTemplate>
< DataTemplate>
< StackPanel Orientation = 水平 VerticalAlignment = 中心 Horizo​​ntalAlignment = 中心 >
< 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值= LightYellow />
< / 风格 >
< / 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 = 新约会请点击= MenuItem_Click />
< Separator />
< MenuItem Header = 退出 />
< / ContextMenu >
< / DataGrid.ContextMenu >
< / DataGrid >

解决方案

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



 <   DataGrid  >  
< DataGrid.Columns >
< DataGridTemplateColumn >
< DataGridTemplateColumn.CellEditingTemplate >
< DataTemplate >
< DataGrid / >
< / DataTemplate >
< / DataGridTemplateColumn.CellEditingTemplate >
< DataGridTemplateColumn.CellTemplate >
< DataTemplate >
< ; TextBlock / < span class =code-k eyword>>
< / DataTemplate >
< / DataGridTemplateColumn.CellTemplate < span class =code-keyword>>
< / 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


这篇关于如何在wpf数据网格控件中包含列表框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆