0

ねえ、

wpf アプリケーションで MVVM を使用しています。アイテムのリストを表示する DataGrid がありSelectedItemCurrentSequenceViewModel のプロパティにバインドしています。その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つを一緒にするのはどうですか...

4

1 に答える 1

0

ビュー モデルに、CurrentSequenceEdit という名前の ColorSettingsSequencesSequence タイプのプロパティを作成し、選択を変更するときにこのオブジェクトの値を設定できます。

次に、追加ボタンをクリックすると、新しい ColorSettingsSequencesSequence オブジェクトを作成し、CurrentSequenceEdit の値に設定できます。

通常、新しいオブジェクトには ID が設定されていないか、グリッドに追加する必要があるかどうかを判断するために [保存] コマンドで使用できる負の数に設定されています。

于 2013-02-12T20:36:35.777 に答える