【问题标题】:Adding and editing item in datagrid with same controls使用相同的控件在数据网格中添加和编辑项目
【发布时间】:2013-02-12 20:24:39
【问题描述】:

嘿,

我在我的 wpf 应用程序中使用 MVVM。我有显示项目列表的 DataGrid,我在 ViewModel 中将 SelectedItem 绑定到 CurrentSequence 属性。当CurrentSequence 更改时,该对象的属性会显示在其他控件中以供编辑。

这是我的 xaml:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=ColorSettingsSequences}"
                  SelectedItem="{Binding Path=CurrentSequence, Mode=TwoWay}">
    .... more things here ...
</DataGrid>

<StackPanel Grid.Column="0" Grid.Row="0">
    <Grid>
        <Label Content="Start temperature (°C)" Height="28" HorizontalAlignment="Left" x:Name="lblSeqStartTemp" VerticalAlignment="Top" />
        <TextBox Height="23" Margin="0,28,10,0" x:Name="tbSeqStartTemp" VerticalAlignment="Top" Text="{Binding Path=CurrentSequence.StartTemp}" />
    </Grid>
    <Grid>
        <Label Content="Start color" Height="28" HorizontalAlignment="Left" x:Name="lblSeqHue" VerticalAlignment="Top" />
        <xctk:ColorPicker Margin="0,28,10,0" x:Name="clrpSeqHue" SelectedColor="{Binding Path=CurrentSequence.StartHue, Converter={StaticResource hueToColor}, ConverterParameter=False}" ShowStandardColors="False" />
    </Grid>
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="0">
    <Grid>
        <Label Content="End temperature (°C)" Height="28" HorizontalAlignment="Left" x:Name="lblSeqEndTemp" VerticalAlignment="Top" />
        <TextBox Height="23" Margin="0,28,10,0" x:Name="tbSeqEndTemp" VerticalAlignment="Top" Text="{Binding Path=CurrentSequence.EndTemp}" />
    </Grid>
    <Grid>
        <Label Content="End color" Height="28" HorizontalAlignment="Left" x:Name="lblSeqEndHue" VerticalAlignment="Top" />
        <xctk:ColorPicker Margin="0,28,10,0" x:Name="clrpSeqEndHue" SelectedColor="{Binding Path=CurrentSequence.EndHue, Converter={StaticResource hueToColor}, ConverterParameter=False}" ShowStandardColors="False" />
    </Grid>
</StackPanel>

代码:

private ColorSettingsSequencesSequence _currentSequence;
public ColorSettingsSequencesSequence CurrentSequence
{
    get
    {
        return this._currentSequence;
    }
    set
    {
        this._currentSequence = value;
        OnPropertyChanged("CurrentSequence");
    }
}

现在的问题是,我如何添加一个按钮来保存更改或添加一个全新的项目。我知道如何做一个或另一个,但是 2 与相同的控件一起怎么办...

【问题讨论】:

    标签: c# wpf mvvm datagrid


    【解决方案1】:

    您可以在视图模型上创建一个名为 CurrentSequenceEdit 的 ColorSettingsSequencesSequence 类型的属性,并且您可以在更改选择时设置此对象的值。

    然后单击添加按钮,您可以创建一个新的 ColorSettingsSequencesSequence 对象并将其设置为 CurrentSequenceEdit 的值。

    通常在新对象上,您的 ID 未设置或设置为负数,您可以在“保存”命令中使用该 ID 来确定是否需要将其添加到网格中。

    【讨论】:

    • 啊,我想知道我自己怎么想不到这个。其实我知道,我想在我输入新值到控件后按“添加新”按钮..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多