Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WPF自定义数据网格模板_.net_Wpf_Xaml_Templates_Datagrid - Fatal编程技术网

.net WPF自定义数据网格模板

.net WPF自定义数据网格模板,.net,wpf,xaml,templates,datagrid,.net,Wpf,Xaml,Templates,Datagrid,我的自定义控件有问题…我需要帮助 我有一个自定义datagrid控件,如下所示: Public Class DataGridExtended Inherits DataGrid Sub New() Dim dict = New ResourceDictionary() dict.Source = New Uri("DataGridExtendedStyle.xaml", UriKind.RelativeOrAbsolute) Me.Resources.MergedDic

我的自定义控件有问题…我需要帮助

我有一个自定义datagrid控件,如下所示:

Public Class DataGridExtended
Inherits DataGrid

Sub New()
    Dim dict = New ResourceDictionary()
    dict.Source = New Uri("DataGridExtendedStyle.xaml", UriKind.RelativeOrAbsolute)
    Me.Resources.MergedDictionaries.Add(dict)
    Me.SetValue(DataGrid.StyleProperty, Me.FindResource("datagridExtendedStyle"))
End Sub

End Class
这就是风格:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options">

<Style
    x:Key="datagridExtendedStyle"
    TargetType="{x:Type DataGrid}">
    <Setter
        Property="Template">
        <Setter.Value>
            <ControlTemplate
                TargetType="DataGrid">
                <DockPanel
                    LastChildFill="True">
                    <!-- TextBox -->
                    <TextBox
                        DockPanel.Dock="Top"
                        Text="When I click here changes edited on datagrid row are not updated on entity properties, Why? It only works when I change selected row on datagrid."
                        TextWrapping="Wrap"
                        Height="40" />
                    <!-- DataGrid -->
                    <ScrollViewer
                        Name="DG_ScrollViewer"
                        Focusable="false">
                        <ScrollViewer.Template>
                            <ControlTemplate
                                TargetType="{x:Type ScrollViewer}">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition
                                            Width="Auto" />
                                        <ColumnDefinition
                                            Width="*" />
                                        <ColumnDefinition
                                            Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition
                                            Height="Auto" />
                                        <RowDefinition
                                            Height="*" />
                                        <RowDefinition
                                            Height="Auto" />
                                    </Grid.RowDefinitions>
                                    <Button
                                        Command="{x:Static DataGrid.SelectAllCommand}"
                                        Focusable="false"
                                        Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}"
                                        Visibility="{Binding Path=HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.All}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
                                        Width="{Binding Path=CellsPanelHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
                                    <DataGridColumnHeadersPresenter
                                        Name="PART_ColumnHeadersPresenter"
                                        Grid.Column="1"
                                        Visibility="{Binding Path=HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Column}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
                                    <ScrollContentPresenter
                                        Name="PART_ScrollContentPresenter"
                                        CanContentScroll="{TemplateBinding CanContentScroll}"
                                        Grid.ColumnSpan="2"
                                        Grid.Row="1" />
                                    <ScrollBar
                                        Name="PART_VerticalScrollBar"
                                        Grid.Column="2"
                                        Maximum="{TemplateBinding ScrollableHeight}"
                                        Orientation="Vertical"
                                        Grid.Row="1"
                                        Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                                        Value="{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                                        ViewportSize="{TemplateBinding ViewportHeight}" />
                                    <Grid
                                        Grid.Column="1"
                                        Grid.Row="2">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition
                                                Width="{Binding Path=NonFrozenColumnsViewportHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
                                            <ColumnDefinition
                                                Width="*" />
                                        </Grid.ColumnDefinitions>
                                        <ScrollBar
                                            Name="PART_HorizontalScrollBar"
                                            Grid.Column="1"
                                            Maximum="{TemplateBinding ScrollableWidth}"
                                            Orientation="Horizontal"
                                            Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                                            Value="{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                                            ViewportSize="{TemplateBinding ViewportWidth}" />
                                    </Grid>
                                </Grid>
                            </ControlTemplate>
                        </ScrollViewer.Template>
                        <ItemsPresenter
                            Name="PART_Items"
                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </ScrollViewer>
                </DockPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

</ResourceDictionary>

现在,我有这个问题

如果我在datagrid上编辑单元格,然后单击顶部文本框,则在datagrid行上编辑的更改不会提交并更新为源实体属性。为什么?

我怎样才能避免这种行为

当我点击顶部的文本框时,我希望datagrid的行为就像我通过外部点击控制一样?你怎么能做到

下面是下载示例项目的链接:

谢谢