I want to change a column values in a datagrid in a random way each 3 sec. I refered to a link from here( Displaying random numbers with a DispatcherTimer ) wish worked when i tested it on a textbox. But it dosen't update the datagrid column cell only when i double click a cell. This is the viewModel, the column i want to change is MarketPrice.
public class PortfolioViewModel : INotifyPropertyChanged
{
public Order order;
private readonly Random random = new Random();
public PortfolioViewModel()
{
this.PortfolioViewObs = PortfolioView();
var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) };
timer.Tick += new EventHandler(Timer_Tick);
timer.Start();
}
public ObservableCollection<PortfolioView> PortfolioViewObs
{
get;
set;
}
private void Timer_Tick(object sender, EventArgs e)
{
for (int i = 0; i < this.PortfolioViewObs.Count; i++)
{
this.PortfolioViewObs[i].MarketPrice = random.Next(20, 30);
}
}
This is MainWindow.xaml
<DataGrid x:Name="PortfolioGrid" ItemsSource="{Binding PortfolioViewObs}" AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="60,32,0,0" VerticalAlignment="Top" Height="196" Width="630">
<DataGrid.Columns>
<DataGridTextColumn Width="100" Header="Security" Binding="{Binding Symbol}"/>
<DataGridTextColumn Width="100" Header="Owned" Binding="{Binding Owned}"/>
<DataGridTextColumn Width="100" Header="Unit Price" Binding="{Binding UnitPrice}"/>
<DataGridTextColumn Width="100" Header="Total Cost" Binding="{Binding TotalCoast}"/>
<DataGridTextColumn Width="100" Header="Market Price" Binding="{Binding MarketPrice}" />
<DataGridTextColumn Width="122" Header="Ordered Quantity" Binding="{Binding OrderedQuantity}"/>
</DataGrid.Columns>
</DataGrid>
Aucun commentaire:
Enregistrer un commentaire