admin管理员组文章数量:1277300
I'm trying to add DataGrid with the feauture to auto add row in the last one. so if the row is filled by pressing Enter of Tab or clicked away a new Row should be inserted. This code worked 1 time with Visual Studio 2022 but right now it's not working.
<Windowxmlns=";xmlns:x=";xmlns:d=";xmlns:mc=";xmlns:local="clr-namespace:PasswordManager.Presse.content"xmlns:Collections="clr-namespace:System.Collections;assembly=System.Runtime"x:Class="PasswordManager.Presse.content.IpData_Window"mc:Ignorable="d"Title="Indirizzi IP" Height="400" Width="800" Icon="/icons/icons_ip_address_black_50x50.png" Background="{x:Null}"><Window.Resources><FontFamily x:Key="GemunuLibre">pack://application:,,,/font/GemunuLibre.ttf#Gemunu Libre</FontFamily><FontFamily x:Key="Abel">pack://application:,,,/font/Abel.ttf#Abel</FontFamily><FontFamily x:Key="FjallaOne">pack://application:,,,/font/FjallaOne.ttf#FjallaOne</FontFamily><FontFamily x:Key="Oswald">pack://application:,,,/font/Oswald.ttf#Oswald</FontFamily><FontFamily x:Key="Cairo">pack://application:,,,/font/Cairo.ttf#Cairo</FontFamily></Window.Resources>
<Border>
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="#FFF7C295" Offset="0"/>
<GradientStop Color="#FFFFCD73" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Grid Margin="0,10.5,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="6*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0,3,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1.4*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Subnet" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Router" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Subnet Teleassistenza" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
</Grid>
<Grid Grid.Row="1" Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
<Grid Grid.Row="1" Cursor="" Margin="0,10,0,0">
<DataGrid Name="DataGridIP" CanUserAddRows="True" AutoGenerateColumns="False" Margin="10,0,10,10" BorderBrush="Transparent" RowHeight="40" HorizontalAlignment="Stretch" CanUserResizeRows="False" CanUserResizeColumns="False" ItemsSource="{Binding IpData}">
<DataGrid.Resources>
<!-- Usando il template definito sopra -->
<DataTemplate x:Key="row_1">
<Button Width="30" Height="30" BorderBrush="Transparent" OverridesDefaultStyle="True" FocusVisualStyle="{x:Null}" Cursor="Hand">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Image Source="/icons/icons_delete_3d_50x50.png" Width="30" Height="30"/>
</Grid>
<ControlTemplate.Triggers>
<!-- Trigger per hover senza cambiare nulla -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
<!-- Trigger per il focus -->
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFF7C69C"/>
<GradientStop Color="#FFE6FF01" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
<!-- Template per la Descrizione (TextBox per la modifica) -->
<DataTemplate x:Key="row_2">
<TextBox Text="{Binding Descrizione, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontFamily="{DynamicResource Abel}" FontSize="18" Margin="0,0,0,0" BorderBrush="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Center" HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
<!-- Template per l'Indirizzo IP (TextBox per la modifica) -->
<DataTemplate x:Key="row_3">
<TextBox Text="{Binding IP, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontFamily="{DynamicResource Oswald}" FontSize="18" VerticalContentAlignment="Center" BorderBrush="Transparent" BorderThickness="0" HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<!-- Colonna con il pulsante -->
<DataGridTemplateColumn Header="" Width="0.3*" CellTemplate="{StaticResource row_1}"/>
<!-- Colonna per la Descrizione (modificabile) -->
<DataGridTemplateColumn Header="Descrizione" Width="2*" CellTemplate="{StaticResource row_2}"/>
<!-- Colonna per l'Indirizzo IP (modificabile) -->
<DataGridTemplateColumn Header="Indirizzo IP" Width="*" CellTemplate="{StaticResource row_3}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</Border>
</Window>
C# CODE:using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Shapes;
namespace PasswordManager.Presse.content{/// <summary>/// Logica di interazione per IpData_Window.xaml/// </summary>public partial class IpData_Window : Window, INotifyPropertyChanged{public ObservableCollection<IPEntry> IpData { get; set; }
public IpData_Window()
{
InitializeComponent();
IpData = new ObservableCollection<IPEntry>();
DataContext = this;
DataGridIP.ItemsSource = IpData;
}
public class IPEntry
{
public string Descrizione { get; set; } = string.Empty;
public string IP { get; set; } = string.Empty;
// Costruttore vuoto richiesto dalla DataGrid per aggiungere nuove righe
public IPEntry() { }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
How i do i resolve or it's a bug? Thanks!!
the problem is that worked for 1 time!
I'm trying to add DataGrid with the feauture to auto add row in the last one. so if the row is filled by pressing Enter of Tab or clicked away a new Row should be inserted. This code worked 1 time with Visual Studio 2022 but right now it's not working.
<Windowxmlns="http://schemas.microsoft/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft/winfx/2006/xaml"xmlns:d="http://schemas.microsoft/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats./markup-compatibility/2006"xmlns:local="clr-namespace:PasswordManager.Presse.content"xmlns:Collections="clr-namespace:System.Collections;assembly=System.Runtime"x:Class="PasswordManager.Presse.content.IpData_Window"mc:Ignorable="d"Title="Indirizzi IP" Height="400" Width="800" Icon="/icons/icons_ip_address_black_50x50.png" Background="{x:Null}"><Window.Resources><FontFamily x:Key="GemunuLibre">pack://application:,,,/font/GemunuLibre.ttf#Gemunu Libre</FontFamily><FontFamily x:Key="Abel">pack://application:,,,/font/Abel.ttf#Abel</FontFamily><FontFamily x:Key="FjallaOne">pack://application:,,,/font/FjallaOne.ttf#FjallaOne</FontFamily><FontFamily x:Key="Oswald">pack://application:,,,/font/Oswald.ttf#Oswald</FontFamily><FontFamily x:Key="Cairo">pack://application:,,,/font/Cairo.ttf#Cairo</FontFamily></Window.Resources>
<Border>
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="#FFF7C295" Offset="0"/>
<GradientStop Color="#FFFFCD73" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Grid Margin="0,10.5,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="6*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0,3,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1.4*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Subnet" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Router" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox Margin="10,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="18" Text="192.168.254.254" FontFamily="{DynamicResource Abel}" Padding="0,0,3,0"/>
</Grid>
<Grid Grid.Column="1">
<Label Content="Subnet Teleassistenza" VerticalContentAlignment="Center" FontSize="18" FontFamily="{DynamicResource Oswald}"/>
</Grid>
</Grid>
</Grid>
<Grid Grid.Row="1" Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
<Grid Grid.Row="1" Cursor="" Margin="0,10,0,0">
<DataGrid Name="DataGridIP" CanUserAddRows="True" AutoGenerateColumns="False" Margin="10,0,10,10" BorderBrush="Transparent" RowHeight="40" HorizontalAlignment="Stretch" CanUserResizeRows="False" CanUserResizeColumns="False" ItemsSource="{Binding IpData}">
<DataGrid.Resources>
<!-- Usando il template definito sopra -->
<DataTemplate x:Key="row_1">
<Button Width="30" Height="30" BorderBrush="Transparent" OverridesDefaultStyle="True" FocusVisualStyle="{x:Null}" Cursor="Hand">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Image Source="/icons/icons_delete_3d_50x50.png" Width="30" Height="30"/>
</Grid>
<ControlTemplate.Triggers>
<!-- Trigger per hover senza cambiare nulla -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
<!-- Trigger per il focus -->
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFF7C69C"/>
<GradientStop Color="#FFE6FF01" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
<!-- Template per la Descrizione (TextBox per la modifica) -->
<DataTemplate x:Key="row_2">
<TextBox Text="{Binding Descrizione, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontFamily="{DynamicResource Abel}" FontSize="18" Margin="0,0,0,0" BorderBrush="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Center" HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
<!-- Template per l'Indirizzo IP (TextBox per la modifica) -->
<DataTemplate x:Key="row_3">
<TextBox Text="{Binding IP, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontFamily="{DynamicResource Oswald}" FontSize="18" VerticalContentAlignment="Center" BorderBrush="Transparent" BorderThickness="0" HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<!-- Colonna con il pulsante -->
<DataGridTemplateColumn Header="" Width="0.3*" CellTemplate="{StaticResource row_1}"/>
<!-- Colonna per la Descrizione (modificabile) -->
<DataGridTemplateColumn Header="Descrizione" Width="2*" CellTemplate="{StaticResource row_2}"/>
<!-- Colonna per l'Indirizzo IP (modificabile) -->
<DataGridTemplateColumn Header="Indirizzo IP" Width="*" CellTemplate="{StaticResource row_3}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</Border>
</Window>
C# CODE:using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Shapes;
namespace PasswordManager.Presse.content{/// <summary>/// Logica di interazione per IpData_Window.xaml/// </summary>public partial class IpData_Window : Window, INotifyPropertyChanged{public ObservableCollection<IPEntry> IpData { get; set; }
public IpData_Window()
{
InitializeComponent();
IpData = new ObservableCollection<IPEntry>();
DataContext = this;
DataGridIP.ItemsSource = IpData;
}
public class IPEntry
{
public string Descrizione { get; set; } = string.Empty;
public string IP { get; set; } = string.Empty;
// Costruttore vuoto richiesto dalla DataGrid per aggiungere nuove righe
public IPEntry() { }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
How i do i resolve or it's a bug? Thanks!!
the problem is that worked for 1 time!
Share Improve this question asked Feb 24 at 22:04 user27828246user27828246 11 silver badge 1- Set DataGridCell.IsEditing. See stackoverflow/questions/34988049/… – jdweng Commented Feb 24 at 22:22
1 Answer
Reset to default 1Try reconfiguring your columns so that they have both a CellTemplate
and a CellEditingTemplate
as shown below. For debugging, I also find it helpful to monitor the editing state in the title bar of the main window. In my code example, as a matter of personal style, a textbox that receives focus will SelectAll()
and also the Escape
key action is made more immediate when editing a new record.
So, trying to stay as close as I can to the XAML you provided for the DataGrid
:
<DataGrid
Name="DataGridIP"
CanUserAddRows="True"
AutoGenerateColumns="False"
Margin="10,0,10,10"
BorderBrush="Transparent"
RowHeight="40"
HorizontalAlignment="Stretch"
CanUserResizeRows="False"
CanUserResizeColumns="False"
ItemsSource="{Binding IpData}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Action" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Width="30"
Height="30"
BorderBrush="Transparent"
FocusVisualStyle="{x:Null}"
Cursor="Hand"
Click="OnActionButtonClick"
CommandParameter="{Binding .}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Description" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Descrizione}"
FontFamily="{DynamicResource Abel}"
FontSize="18"
VerticalAlignment="Center"
TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox
Text="{Binding Descrizione, UpdateSourceTrigger=PropertyChanged}"
FontFamily="{DynamicResource Abel}"
FontSize="18"
BorderBrush="Transparent"
BorderThickness="0"
VerticalContentAlignment="Center"
HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="IP Address" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding IP}"
FontFamily="{DynamicResource Oswald}"
FontSize="18"
VerticalAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox
Text="{Binding IP, UpdateSourceTrigger=PropertyChanged}"
FontFamily="{DynamicResource Oswald}"
FontSize="18"
BorderBrush="Transparent"
BorderThickness="0"
VerticalContentAlignment="Center"
HorizontalScrollBarVisibility="Auto"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Minimal New Item Flow Example
Using lambdas to subscribe to the DataGridIP
events in the CTOR, one working implementation is shown below.
new MainWindowViewModel DataContext => (MainWindowViewModel)base.DataContext;
public MainWindow()
{
InitializeComponent();
DataGridIP.BeginningEdit += (sender, e) =>
{
Title = "Main Window - EDITING";
};
DataGridIP.CellEditEnding += (sender, e) =>
{
Title = "Main Window";
switch (e.EditAction)
{
case DataGridEditAction.Cancel:
if (e.Row.IsNewItem)
{
DataContext.IpData.Remove((Record)e.Row.Item);
// Refresh the ephemeral row
DataGridIP.CanUserAddRows = false;
DataGridIP.CanUserAddRows = true;
}
break;
};
};
DataGridIP.PreparingCellForEdit += (sender, e) =>
{
if (e.EditingElement is ContentPresenter cp)
{
cp.ApplyTemplate(); // Make sure the template elements exist.
if(FindVisualChild<TextBox>(cp) is { } textBox)
{
Dispatcher.BeginInvoke(() =>
{
textBox.SelectAll();
textBox.Focus();
});
}
}
};
// Add test data items
for (int i = 0; i < 3; i++) DataContext.IpData.Add(new());
}
private void AnyTextBoxGotFocus(object? sender, RoutedEventArgs? e)
{
if(sender is TextBox textBox)
{
Dispatcher.BeginInvoke(() =>
{
if (!DataContext.IsDataGridReadOnly)
{
textBox.SelectAll();
}
textBox.Focus();
});
}
}
private T? FindVisualChild<T>(DependencyObject parent) where T : DependencyObject
{
int childCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childCount; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
if (child is T foundChild)
{
return foundChild;
}
T? childOfChild = FindVisualChild<T>(child);
if (childOfChild != null)
{
return childOfChild;
}
}
return default;
}
Models
class MainWindowViewModel : INotifyPropertyChanged
{
public ObservableCollection<Record> IpData { get; } = new();
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler? PropertyChanged;
}
[DebuggerDisplay("{Descrizione}")]
class Record
{
static int _autoIncrement = 1;
public string Descrizione { get; set; } = $"Record {_autoIncrement++}";
public string? IP { get; set; } = "0.0.0.0";
}
As tracked in the title bar, clicking in the blank row now enters edit mode properly.
本文标签: Automatic Row DataGrid C WPFStack Overflow
版权声明:本文标题:Automatic Row DataGrid C# WPF - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741239591a2363709.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论