Я хочу изменить значения столбца в сетке данных случайным образом каждые 3 се c. Я сослался на ссылку отсюда ( Отображение случайных чисел с DispatcherTimer ) wi sh работало, когда я тестировал его в текстовом поле. Но это не обновляет ячейку столбца таблицы данных, только когда я дважды щелкаю по ячейке. Это viewModel, столбец, который я хочу изменить, это 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);
}
}
Это 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>
Это mainwindow.xaml.cs
public MainWindow()
{
InitializeComponent();
//ViewModel.PortfolioViewModel vm = new ViewModel.PortfolioViewModel();
this.DataContext = new ViewModel.PortfolioViewModel();
}
PortfolioView - это класс, реализованный в службе WCf
[DataContract]
public class PortfolioView
{
[DataMember]
public string Symbol { get; set; }
[DataMember]
public float Owned { get; set; }
[DataMember]
public float UnitPrice { get; set; }
[DataMember]
public float TotalCoast { get; set; }
[DataMember]
public float MarketPrice { get; set; }
[DataMember]
public float OrderedQuantity { get; set; }
[DataMember]
public float AvailabeAmount { get; set; }
}