Wpf DataGrid ajouter une nouvelle ligne
j'ai réussi à obtenir DataGrid
pour afficher les nouvelles de la ligne pour ajouter un nouvel élément.
Le problème auquel je fais face maintenant est que je veux des données dans le reste de wpf DataGrid
à lire seulement et uniquement la nouvelle ligne doit être modifiable.
actuellement c'est comme ça que mon DataGrid
regarde.
<DataGrid AutoGenerateColumns="False" Name="DataGridTest" CanUserAddRows="True" Grid.Row="2" ItemsSource="{Binding TestBinding}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Line" IsReadOnly="True" Binding="{Binding Path=Test1}" Width="50"></DataGridTextColumn>
<DataGridTextColumn Header="Account" IsReadOnly="True" Binding="{Binding Path=Test2}" Width="130"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
mais puisque j'ai gardé les colonnes en lecture seule, une nouvelle rangée ajoute aussi en lecture seule ce qui est ce que je ne veux pas.
21
demandé sur
Dave Clemmer
2013-04-27 15:02:23
2 réponses
Essayez ceci MSDN blog
essayez aussi l'exemple suivant:
Xaml:
<DataGrid AutoGenerateColumns="False" Name="DataGridTest" CanUserAddRows="True" ItemsSource="{Binding TestBinding}" Margin="0,50,0,0" >
<DataGrid.Columns>
<DataGridTextColumn Header="Line" IsReadOnly="True" Binding="{Binding Path=Test1}" Width="50"></DataGridTextColumn>
<DataGridTextColumn Header="Account" IsReadOnly="True" Binding="{Binding Path=Test2}" Width="130"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button Content="Add new row" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
CS:
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var data = new Test { Test1 = "Test1", Test2 = "Test2" };
DataGridTest.Items.Add(data);
}
}
public class Test
{
public string Test1 { get; set; }
public string Test2 { get; set; }
}
29
répondu
Elyor
2013-04-27 17:21:19
utilisez simplement ceci Style
DataGridRow
:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self},Path=IsNewItem,Mode=OneWay}" />
</Style>
</DataGrid.RowStyle>
6
répondu
Kylo Ren
2016-02-16 17:05:14