直方图
<h3>ViewModel</h3>
<pre><code class="language-csharp">public class WindowsViewmodel
{
public class Datas
{
public double Value { get; set; }
public string time { get; set; }
}
public ObservableCollection&lt;Datas&gt; Ass { get; set; } = new ObservableCollection&lt;Datas&gt;();
public WindowsViewmodel()
{
Task.Run(async () =&gt;
{
while (true)
{
await Task.Delay(1000);
Application.Current.Dispatcher.Invoke(() =&gt;
{
Ass.Add(new Datas()
{
Value = new Random().Next(1, 100),
time = DateTime.Now.ToString(&quot;mm:ss&quot;)
});
if (Ass.Count &gt; 20)
{
Ass.RemoveAt(0);
}
});
}
});
}
}</code></pre>
<h3>UI界面</h3>
<pre><code class="language-csharp"> &lt;Grid&gt;
&lt;Grid.RowDefinitions&gt;
&lt;RowDefinition&gt;&lt;/RowDefinition&gt;
&lt;RowDefinition&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;
&lt;ListBox ItemsSource=&quot;{Binding Ass}&quot; Grid.Row=&quot;0&quot;&gt;
&lt;ListBox.ItemsPanel&gt;
&lt;ItemsPanelTemplate&gt;
&lt;VirtualizingStackPanel Orientation=&quot;Horizontal&quot;&gt;&lt;/VirtualizingStackPanel&gt;
&lt;/ItemsPanelTemplate&gt;
&lt;/ListBox.ItemsPanel&gt;
&lt;ListBox.Resources&gt;
&lt;Style TargetType=&quot;ListBoxItem&quot;&gt;
&lt;Setter Property=&quot;VerticalContentAlignment&quot; Value=&quot;Bottom&quot;&gt;&lt;/Setter&gt;
&lt;/Style&gt;
&lt;/ListBox.Resources&gt;
&lt;ListBox.ItemTemplate&gt;
&lt;DataTemplate&gt;
&lt;Grid&gt;
&lt;Grid.RowDefinitions&gt;
&lt;RowDefinition&gt;&lt;/RowDefinition&gt;
&lt;RowDefinition&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;
&lt;Border Grid.Row=&quot;0&quot; Width=&quot;15&quot; Height=&quot;{Binding Value}&quot; Background=&quot;Pink&quot;&gt;&lt;/Border&gt;
&lt;TextBlock Grid.Row=&quot;1&quot; Text=&quot;{Binding time}&quot;&gt;&lt;/TextBlock&gt;
&lt;/Grid&gt;
&lt;/DataTemplate&gt;
&lt;/ListBox.ItemTemplate&gt;
&lt;/ListBox&gt;
&lt;/Grid&gt;</code></pre>