将文本框值添加到wpf中的datagrid行
我正在用MVVM模式开发一个WPF应用程序将文本框值添加到wpf中的datagrid行,wpf,mvvm,datagrid,textbox,Wpf,Mvvm,Datagrid,Textbox,我正在用MVVM模式开发一个WPF应用程序 <Grid Height="444" Width="486"> <Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" /> <TextBox Height="142" HorizontalAlignment="Left
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
我将数据填充到gridview,在选择时,我填充到textbox和combobox以编辑内容。然后保存数据
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
现在我想向网格视图添加新数据。
用户输入到文本框,组合框应添加到网格视图和我需要保存到数据库
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
我的XMAL如下所示:
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
请帮帮我。
SN假设您正确地使用了MVVM,并且
Param
属性是一个集合,并且SelectedItem
属性与集合中的项目类型相同,那么您应该能够在视图模型中的SaveData
命令中执行此操作:
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
Param.Add(SelectedItem);
如果您使用的是MVVM,那么不要将TextBox/ComboBox直接绑定到datagrid,而是将它们绑定到ViewModel中Parameter类型的属性(例如,
public Parameter DisplayedParameter{get;set;}
)。然后支持文本框/组合框的两种模式-添加和编辑
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
在添加模式下,只需将DisplayedParameter设置为Parameter的新实例。单击Save按钮,将参数保存到后端,并刷新Param属性的值(我假设它是参数的List/ObservableCollection)。或者,将参数添加到参数列表中,然后将参数保存到后端
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
在编辑模式下,只需将DisplayedParameter设置为SelectedItem的值(您还需要SelectedItem的viewmodel属性)。单击Save(保存),您可以在后端保存编辑的参数并刷新参数
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>
请注意,默认情况下,您仍处于添加模式;并且仅当用户请求时才切换到编辑模式(例如,在datagrid中选择项目,或者可能单击datagrid行中的编辑按钮)。完成编辑后(例如,用户保存或取消),您将返回默认模式
<Grid Height="444" Width="486">
<Label Content="Script" Height="28" HorizontalAlignment="Left" Margin="13,36,0,0" Name="lblScript" VerticalAlignment="Top" />
<TextBox Height="142" HorizontalAlignment="Left" Margin="75,38,0,0" Name="txtScript" VerticalAlignment="Top" Width="380" Text="{Binding Script_Text}"/>
<Button Content="Add" Command="{Binding SaveData}" Height="23" HorizontalAlignment="Left" Margin="284,409,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" />
<Button Content="Reset" Command="{Binding ClearData}" Height="23" HorizontalAlignment="Left" Margin="380,409,0,0" Name="btnReset" VerticalAlignment="Top" Width="75" />
<DataGrid ItemsSource="{Binding Path=Param}" HeadersVisibility="Column" SelectionMode="Single"
AlternatingRowBackground="Gainsboro" Background="White" AutoGenerateColumns="False"
ItemContainerStyle="{StaticResource itemstyle}" CanUserAddRows="True" GridLinesVisibility="None"
Height="150" HorizontalAlignment="Left" HorizontalContentAlignment="Left" IsEnabled="True"
IsReadOnly="True" Margin="75,200,0,0" Name="dgMain" RowHeight="23" VerticalAlignment="Center"
VerticalContentAlignment="Center" Width="380" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditData}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Parameter" Width="140" />
<DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" Width="100" />
<DataGridTextColumn Binding="{Binding Path=Value}" Header="Value" Width="120" />
</DataGrid.Columns>
</DataGrid>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="75,186,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Name, ElementName=dgMain}" HorizontalAlignment="Left" Margin="75,213,0,0" Name="txtName" VerticalAlignment="Top" Width="110" />
<Label Content="Type" Height="28" HorizontalAlignment="Left" Margin="191,186,0,0" Name="lblType" VerticalAlignment="Top" />
<ComboBox Height="23" Text="{Binding SelectedItem.Type, ElementName=dgMain}" HorizontalAlignment="Left" Margin="191,213,0,0" Name="cboType" VerticalAlignment="Top" Width="110" ItemsSource="{Binding}">
<ComboBoxItem Content="integer" />
<ComboBoxItem Content="double" />
<ComboBoxItem Content="string" />
</ComboBox>
<Label Content="Value" Height="28" HorizontalAlignment="Left" Margin="307,186,0,0" Name="lblValue" VerticalAlignment="Top" />
<TextBox Height="23" Text="{Binding SelectedItem.Value, ElementName=dgMain}" HorizontalAlignment="Left" Margin="307,213,0,0" Name="textBox1" VerticalAlignment="Top" Width="110" />
<TextBlock HorizontalAlignment="Left" Margin="428,15,0,0" Height="32">
<ToggleButton x:Name="Add" Focusable="False" Command ="{Binding AddNew}" Style="{StaticResource SMToggle}" >
<Image Source="/Image/Add.png" Width="16" Height="16" />
</ToggleButton>
</TextBlock>
</Grid>