/ / Як включити список списку до керування wpf datagrid - c #, wpf, datagrid

Як включити listbox в елемент керування datagrid wpf - c #, wpf, datagrid

хочу включити список списку в керування мережею даних wpf, коли датрід натисніть на клітинку, як, наприклад, на календар календаря.

подивитися - це зображення

Мій код Xaml

<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>

введіть опис зображення тут

Відповіді:

2 для відповіді № 1

Я "заміню кожну вашу колонку DataGridTextColumn на стовпець DataGridTemplateColumn так:

<DataGridTemplateColumn Header="Sunday" CellEditingTemplate="{StaticResource ListboxCellTemplate}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Sunday}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

І тоді вам також потрібно буде додати ресурс для вашого режиму редагування, де ви переходите до шаблону списку:

<DataGrid.Resources>
<DataTemplate x:Key="TextCellTemplate" >
<TextBlock Text="Foo!" />
</DataTemplate>
<DataTemplate x:Key="ListboxCellTemplate" >
<ComboBox>
<ComboBoxItem>Foo</ComboBoxItem>
<ComboBoxItem>Bar</ComboBoxItem>
<ComboBoxItem>Baz</ComboBoxItem>
</ComboBox>
</DataTemplate>
</DataGrid.Resources>

Очевидно, я ріжу тут багато кутів, алеце повинно дати вам загальну думку. Одна з проблем цього коду полягає в тому, що користувачеві потрібно буде двічі клацнути по комірці, щоб відобразити вікно списку, тобто один раз, щоб надати йому фокус і знову перейти в режим редагування, є стаття на сайті codeplex показуючи, як обійти це.