0

リストコレクションを作成し、それをデータグリッドに正常にバインドしたアプリケーションを作成しています。私が抱えている問題は、ユーザーがデータグリッドに変更を加えた後に [保存] ボタンをクリックしたときに、データグリッドからデータを取得し、それを使用して同じリスト コレクションの要素を形成することです。前もって感謝します。

XAML を以下に示します。

<Grid Background="CornflowerBlue">
    <DataGrid AutoGenerateColumns="False" Height="530" HorizontalAlignment="Left" Margin="12,12,0,0" Name="gridBeveragesAndJuices" VerticalAlignment="Top" Width="573"
              HorizontalGridLinesBrush="Cyan" RowBackground="#FF12AD12" VerticalGridLinesBrush="Cyan" Foreground="Cyan" EnableColumnVirtualization="False" 
              EnableRowVirtualization="False" CanUserDeleteRows="True" CanUserAddRows="True" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" AlternatingRowBackground="DodgerBlue" FontSize="13">
        <DataGrid.Resources>
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="Foreground" Value="DodgerBlue" />
                <Setter Property="BorderBrush" Value="Yellow" />
            </Style>
        </DataGrid.Resources>
        <DataGrid.Columns>
            <DataGridTextColumn Width="287" Header="                        ITEMS"
                       Binding="{Binding Path=ITEMS8, Mode=TwoWay, NotifyOnTargetUpdated=True}" x:Name="ItemsColumn" />
            <DataGridTextColumn Width="286" Header="                        PRICE"
                       Binding="{Binding Path=PRICE8, Mode=TwoWay, NotifyOnTargetUpdated=True}" x:Name="PriceColumn"/>
        </DataGrid.Columns>
    </DataGrid>
    <Button Content="Cancel" Height="23" HorizontalAlignment="Left" Margin="67,578,0,0" Name="btnCancel" VerticalAlignment="Top" Width="75" />
    <Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="256,578,0,0" Name="btnSave" VerticalAlignment="Top" Width="75" Click="btnSave_Click" />
    <Button Content="Exit" Height="23" HorizontalAlignment="Left" Margin="444,578,0,0" Name="btnExit" VerticalAlignment="Top" Width="75" />


</Grid>

以下はコードビハインドです。

public partial class BeveragesAndJuices : Window
{
    public BeveragesAndJuices()
    {
        InitializeComponent();
        gridBeveragesAndJuices.ItemsSource = Source8;
    }

    public class Values8 
    {
        public string ITEMS8 { get; set; }
        public decimal PRICE8 { get; set; }
    }


    public List<Values8> Source8 = new List<Values8> 
    {
        new Values8(){ITEMS8 = "Lacasera ", PRICE8 = 290}, new Values8(){ITEMS8 = "Cran-Orange Chiller ", PRICE8 = 290}, new Values8(){ITEMS8 = "Festive Fruity Flavored Milk  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Homemade Iced Coffee ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Cucumber Seltzer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fizzy Water ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Haunted (Black Cauldron) Punch  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Ginger Iced Green Tea " , PRICE8 = 290}, new Values8(){ITEMS8 ="Orange Creamsicle Shake " , PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Blueberry Blast Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 ="Shamrock Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Pomegranate Punch  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="anned Milo " , PRICE8 = 290}, new Values8(){ITEMS8 ="Viju Milk " , PRICE8 = 290}, new Values8(){ITEMS8 = "5 Alive ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Cherry Vanilla Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 = "Boysenberry-Banana Blast ", PRICE8 = 290}, new Values8(){ITEMS8 = "Vanilla Iced Mochaccino  ", PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Choco-Nana Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fresh Fruit Pudding Milk Mixer ", PRICE8 = 290}, new Values8(){ITEMS8 ="Luscious Licuado  " , PRICE8 = 290}, 
        new Values8(){ITEMS8 = "Frosty Pine-Orange Yogurt Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 = "Mocha-ccino Freeze ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lite Iced Mocha " , PRICE8 = 290}, 
        new Values8(){ITEMS8 ="Nectarine Whirl " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberries and Cream Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberry Light Lemonade " , PRICE8 = 290}
    };

    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        //clear the elements of the source  
        Source8.Clear();

        //get the items on the datagrid and use them to form new elements of the 
        //Source8

        foreach(DataGridRow Row in gridBeveragesAndJuices)
        {
            //this where am stuck, foreach flags an error
            //that DataGridRow does not have a definition for GetEnumerator
        }
    }
}
4

2 に答える 2

0

ITEMS8 と PRICE8 の TwoWayBinding が機能するため、Source8 を再構築する必要はありません。値はすでに最新です。Source8 に新しいエントリを追加しても、すぐに新しいエントリが表示されRowます。DataGrid

保存ボタンを使用して Source8 をシリアル化します。これはDataGrid.

于 2012-04-07T12:35:50.623 に答える
0

コードを少し変更してバインドします。リストを作成すると、毎回リストが新しくなるため、実際にはパブリック プロパティであってはなりません。 = new は外部で消費されることを意図していません。

   private List<> source8 = new Values8(){ITEMS8 = "Lacasera ", PRICE8 = 290}, new Values8(){ITEMS8 = "Cran-Orange Chiller ", PRICE8 = 290}, new Values8(){ITEMS8 = "Festive Fruity Flavored Milk  ", PRICE8 = 290}, 
    new Values8(){ITEMS8 = "Homemade Iced Coffee ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Cucumber Seltzer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fizzy Water ", PRICE8 = 290}, 
    new Values8(){ITEMS8 ="Haunted (Black Cauldron) Punch  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Lemon Ginger Iced Green Tea " , PRICE8 = 290}, new Values8(){ITEMS8 ="Orange Creamsicle Shake " , PRICE8 = 290}, 
    new Values8(){ITEMS8 = "Blueberry Blast Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 ="Shamrock Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Pomegranate Punch  ", PRICE8 = 290}, 
    new Values8(){ITEMS8 ="anned Milo " , PRICE8 = 290}, new Values8(){ITEMS8 ="Viju Milk " , PRICE8 = 290}, new Values8(){ITEMS8 = "5 Alive ", PRICE8 = 290}, 
    new Values8(){ITEMS8 ="Cherry Vanilla Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 = "Boysenberry-Banana Blast ", PRICE8 = 290}, new Values8(){ITEMS8 = "Vanilla Iced Mochaccino  ", PRICE8 = 290}, 
    new Values8(){ITEMS8 ="Choco-Nana Milk Mixer " , PRICE8 = 290}, new Values8(){ITEMS8 = "Fresh Fruit Pudding Milk Mixer ", PRICE8 = 290}, new Values8(){ITEMS8 ="Luscious Licuado  " , PRICE8 = 290}, 
    new Values8(){ITEMS8 = "Frosty Pine-Orange Yogurt Smoothie ", PRICE8 = 290}, new Values8(){ITEMS8 = "Mocha-ccino Freeze ", PRICE8 = 290}, new Values8(){ITEMS8 ="Lite Iced Mocha " , PRICE8 = 290}, 
    new Values8(){ITEMS8 ="Nectarine Whirl " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberries and Cream Smoothie  " , PRICE8 = 290}, new Values8(){ITEMS8 ="Strawberry Light Lemonade " , PRICE8 = 290};

public BeveragesAndJuices()
{
    InitializeComponent();
    gridBeveragesAndJuices.ItemsSource = Source8;  // move this to XAML Binding
}

public class Values8 
{
    public string ITEMS8 
    { 
        get; 
        set
        {
             Debug.WriteLine(value);
             // this is where you do the update
        } 
    }
    public decimal PRICE8 { get; set; }
}


public List<Values8> Source8
{
    get { return source8; }

}

private void btnSave_Click(object sender, RoutedEventArgs e)
{
    //clear the elements of the source  
    //Source8.Clear(); for sure you don't want to do this  !

    //get the items on the datagrid and use them to form new elements of the 
    //Source8

    // do this is the set
    //foreach(DataGridRow Row in gridBeveragesAndJuices)
    //{
        //this where am stuck, foreach flags an error
        //that DataGridRow does not have a definition for GetEnumerator
    //}
}
于 2012-04-07T13:33:54.323 に答える