我有一个包含两列的数据网格。第一个是按钮ID,第二个是按钮标签。 对于buttonLabel列,我希望它们具有"按钮"的外观,当用户点击它时,它将启用编辑模式。
这就是我现在所拥有的:
<ScrollViewer Grid.Row="2" Grid.ColumnSpan="2" Margin="0,3,0,0" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Center" Height="Auto">
<DataGrid x:Name="dataGrid"
Grid.Row="0"
Height="Auto"
ItemsSource="{Binding Path=States}"
AutoGenerateColumns="False"
CanUserAddRows="False"
Focusable="False"
CanUserSortColumns="True"
KeyboardNavigation.TabNavigation="Continue"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Extended"
>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Id" Width="*" MinWidth="100"
ClipboardContentBinding="{Binding Path=Id}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<TextBlock x:Name="textBlock" Margin="1" Text="{Binding Path=Id}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Label" Width="*" MinWidth="100"
ClipboardContentBinding="{Binding Path=Label}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<Button x:Name="textBlock" Margin="1"
Content="{Binding Path=Label}"
Foreground="{Binding Path=ForegroundColor, Converter={StaticResource ColorToSolidColorBrushValueConverter}}"
Background="{Binding Path=BackgroundColor, Converter={StaticResource ColorToSolidColorBrushValueConverter}}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Label, UpdateSourceTrigger=PropertyChanged}">
</TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
我对此代码的问题是当用户想要编辑按钮的内容时,他需要点击&#34; edge&#34;单元格以启用编辑模式。
如何修改它以便在单击按钮时立即启用编辑模式? (仅供参考我在使用textblock而不是按钮的应用程序中有相同的实现,并且它完美地运行)
答案 0 :(得分:1)
选项一:在按钮上将IsHitTestVisible属性设置为false。
选项二:通过从Button模板复制XAML,使TextBlock看起来像一个按钮。