我已经实现了一个可编辑的dataGrid,用户可以在其中键入一些值。关键是,我只想要一行,但是当第一行用值填充时,dataGrid会不断添加一行,而#34; tab"键是按下的。我甚至设置了属性:
CanUserAddRows="False"
但是,在dataGrid中没有显示任何行,我也无法输入任何值。
我的XAML代码:
<DataGrid x:Name="dataGrid2" HorizontalAlignment="Left" Margin="14,373,0,0" VerticalAlignment="Top" Width="214" Height="90" AutoGenerateColumns="False" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" CanUserAddRows="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Vare nr.:" Binding="{Binding Varenr}" />
<DataGridTemplateColumn Header="Kolonnenavn" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<ComboBox Name="comboBoxUpdate" SelectedItem="{Binding Kolonnenavn}">
<ComboBoxItem Content="Navn" />
<ComboBoxItem Content="Varenr"/>
<ComboBoxItem Content="Enhed"/>
<ComboBoxItem Content="Stkpris"/>
<ComboBoxItem Content="Konto"/>
<ComboBoxItem Content="Dato"/>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Nyt Værdi" Binding="{Binding Nytværdi, StringFormat='{}{0:0.####}'}" />
</DataGrid.Columns>
</DataGrid>
我将键入的值绑定到ObservableCollection。
XAML.CS:
public Window1()
{
InitializeComponent();
ObservableCollection<User> users = new ObservableCollection<User>();
dataGrid2.ItemsSource = users;
}
public class User
{
public string Varenr { get; set; }
public ComboBoxItem Kolonnenavn { get; set; }
public string Nytværdi { get; set; }
}
我该如何处理?
答案 0 :(得分:0)
您可以禁用使用如下触发器添加多行的功能:
<DataGrid.Style>
<Style TargetType="DataGrid">
<Style.Triggers>
<Trigger Property="HasItems" Value="True">
<Setter Property="CanUserAddRows" Value="False"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Style>