2011-03-21 79 views
0

我的情況是,只有在符合某個值的條件時,才需要更新Y座標值。例如,如果該值爲「不可用」或「0」或「15」。然後,通過單擊「更新」按鈕,該值應該更改爲「已更新」,並且字符串左側的紅色框可以更改爲任何其他顏色。我想知道根據下面的代碼找出正確的方法。任何建議非常感謝!謝謝!如何在運行時更新Silverlight應用程序中的datagrid項目的值?

XAML:

<UserControl.DataContext>  
    <local:MainPage_ViewModel/> 
</UserControl.DataContext> 
<StackPanel Orientation="Horizontal"> 
    <data:DataGrid ItemsSource="{Binding Coordinates}" AutoGenerateColumns="False" Margin="10"> 
     <data:DataGrid.Columns>    
      <data:DataGridTextColumn Header="X Position" Width="100" Binding="{Binding X}"/>    
      <data:DataGridTextColumn Header="Y Position" Width="100" Binding="{Binding Y}"/>    
      <data:DataGridTemplateColumn Header="Delete Item" Width="100">     
       <data:DataGridTemplateColumn.CellTemplate>      
        <DataTemplate>       
         <Button Content="Delete" Tag="{Binding}" Click="Button_Click"/>      
        </DataTemplate>     
       </data:DataGridTemplateColumn.CellTemplate>    
      </data:DataGridTemplateColumn>   
     </data:DataGrid.Columns>  
    </data:DataGrid> 
    <StackPanel VerticalAlignment="Top" Margin="0,40,0,0"> 
     <TextBlock x:Name="Click_to_update_value" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/> 
     <Button x:Name="Update_value" Content="Update Value" Margin="0,10,0,0" Click="Button_Update"/> 
    </StackPanel> 
</StackPanel> 

背後代碼:

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent();   
     this.viewModel = this.DataContext as MainPage_ViewModel; 
    } 

    private MainPage_ViewModel viewModel;  
    private void Button_Update(object sender, RoutedEventArgs e)  
    {   

    } 
} 

視圖模型:

public class MainPage_ViewModel : INotifyPropertyChanged 
{ 
    public MainPage_ViewModel() 
    { 
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 1, Y = 2 }));   
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 2, Y = 4 }));   
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 3, Y = 6 }));   
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 4, Y = 8 }));   
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 5, Y = 10 }));   
     coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 6, Y = 12 })); 
    } 

    public ObservableCollection<Coordinate_DataViewModel> Coordinates  
    {   
     get { return coordinates; }   
     set   
     {    
      if (coordinates != value)    
      {     
       coordinates = value;     
       OnPropertyChanged("Coordinates");    
      }   
     }  
    }  
    private ObservableCollection<Coordinate_DataViewModel> coordinates = new ObservableCollection<Coordinate_DataViewModel>();  
    public event PropertyChangedEventHandler PropertyChanged;  

    public void OnPropertyChanged(string propertyName)  
    {   
     if (PropertyChanged != null)   
     {    
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName));   
     }  
    }  

    public void DeleteCoordinate(Coordinate_DataViewModel dvmToDelete)  
    {   
     coordinates.Remove(dvmToDelete);  
    } 

    public void UpdateCoordinate(Coordinate_DataViewModel dvmToDelete) 
    { 

    } 
} 

//Model 
public class Coordinate_Model 
{  
    public double X;  
    public double Y; 
} 

//DataViewModel 
public class Coordinate_DataViewModel 
{  
    public Coordinate_DataViewModel(Coordinate_Model model)  
    {   
     this.underlyingModel = model;  
    }  

    private Coordinate_Model underlyingModel;  
    public double X  
    {   
     get { return underlyingModel.X; }   
     set { underlyingModel.X = value; }  
    }  

    public double Y  
    {   
     get { return underlyingModel.Y; }   
     set { underlyingModel.Y = value; }  
    }  public string XYCoordinate  

    {   
     get { return "(" + X + "," + Y + ")"; }  
    } 
} 
+0

你能解釋一下你想要什麼樣的最終結果嗎?您是否在網格中查找值爲「不可用」或「已更新」的新列? – JSprang 2011-03-22 14:33:51

回答

1

您可以通過更新在數據網格的值(一個或多個)更新可觀察集合。你可能想要做的一件事是在視圖模型中處理事件,而不是後面的代碼。這可能會更新視圖模型集合中的值,更有意義。

+0

感謝您的建議。我想知道你是否可以在示例代碼中顯示它。我嘗試過類似但沒有成功。再次感謝你。 – vladc77 2011-03-21 04:37:29

相關問題