可编辑按钮

时间:2014-12-11 18:44:55

标签: wpf xaml view

我有一个包含两列的数据网格。第一个是按钮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;单元格以启用编辑模式。

enter image description here

如何修改它以便在单击按钮时立即启用编辑模式? (仅供参考我在使用textblock而不是按钮的应用程序中有相同的实现,并且它完美地运行)

1 个答案:

答案 0 :(得分:1)

选项一:在按钮上将IsHitTestVisible属性设置为false。

选项二:通过从Button模板复制XAML,使TextBlock看起来像一个按钮。