0

アップロードされたファイルのリストとコピー数を表示するdatacontextオブジェクトがあります。これまでのところ、ユーザーは各行にある編集アイコンをクリックして、その行のデータを取得できますが、データを変更する方法がわかりません。

メインページの[詳細の変更]ダイアログのボタンイベントは次のとおりです。

    private void Image_MouseLeftButtonUp_1(object sender, MouseButtonEventArgs e)
    {
        Image b = sender as Image;
        FileReceivedItem fi = b.DataContext as FileReceivedItem;
        string fileCopies = fi.fileCopies;
        string fileName = fi.FileName;
        DetailsWindow detailsDlg = new DetailsWindow(fileCopies, fileName);
        detailsDlg.Show();
        detailsDlg.Closed += new EventHandler(detailsWnd_Closed);
    }

    public DetailsWindow detailsDlg;
    void detailsWnd_Closed(object sender, EventArgs e)
    {
        MessageBox.Show("I want to change fileCopies here");
    }

XAMLの関連部分:

    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Hidden"  ItemsSource="{StaticResource FileReceivedItem}"  Name="filesReceivedList" HorizontalAlignment="Left"  Grid.Row="1" Grid.Column="1"  Background="White" Margin="12,23,0,0"
     VerticalAlignment="Top" Width="411" Height="175" Loaded="filesReceivedList_Loaded">

        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Width="404" Height="19" Orientation="Horizontal" >
                    <TextBlock x:Name="ListFileName" Text="{Binding FileName}" Width="283"  VerticalAlignment="Center">
                        <ToolTipService.ToolTip>
                            <ToolTip Content="{Binding FileName}"></ToolTip>
                        </ToolTipService.ToolTip>
                    </TextBlock>
                    <TextBlock Text="{Binding fileCopies}" Width="50"  VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding FileID}" Width="0" Visibility="Collapsed"  VerticalAlignment="Center"/>

                    <Image Source="images/Edit.png" MouseLeftButtonUp="Image_MouseLeftButtonUp_1" Width="20" Margin="0 0 0 0">
                        <ToolTipService.ToolTip>
                            <ToolTip Content="Edit"></ToolTip>
                        </ToolTipService.ToolTip>
                    </Image>

                    <TextBlock Text="" Width="10" />

                    <Image Source="images/Delete.png" MouseLeftButtonUp="Image_MouseLeftButtonUp" >
                        <ToolTipService.ToolTip>
                            <ToolTip Content="Delete"></ToolTip>
                        </ToolTipService.ToolTip>
                    </Image>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

重要なコードが欠落している場合はお知らせください。データソースが正確にどのように機能するかわかりません。

4

1 に答える 1

0

私は最終的にそれを機能させました。かなり簡単です。私はahwileでSLを使用したことがありません。これは私がやったことですが、誰かがより良い答えとして提供するより良い方法があるかもしれません:

    void detailsWnd_Closed(object sender, EventArgs e)
    {
        changeFileCopies(detailsDlg.FileName, detailsDlg.nCopies.Text);
    }

    public void changeFileCopies(string filename, string newCopies)
    {
        var row = (FileReceivedItem)filesReceivedDataSource.Where(x => x.FileName == filename).FirstOrDefault();
        row.fileCopies = newCopies;
        filesReceivedList.ItemsSource = null;
        this.filesReceivedList.ItemsSource = filesReceivedDataSource;
    }
于 2012-10-26T00:18:28.370 に答える