2012-10-25 51 views
0

我有一個datacontext對象,顯示上傳文件的列表以及副本數量。到目前爲止,用戶可以單擊每行中的編輯圖標,然後檢索該行中的數據,但我不知道如何更改任何數據。如何更改Silverlight 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> 

讓我知道如果任何重要的代碼段都會丟失。我不確定數據源的工作原理。

+0

將您的編輯移動到答案並回答自己的問題。這樣人們可以投票並找到它更容易。 –

回答

0

我終於搞定了。非常簡單。我只是沒有使用SL在ahwile。這就是我所做的,雖然可能有更好的方式,有人可能會提供更好的答案:

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; 
    } 
相關問題