我一直在努力争取在WPF中更新列表框。我有一个包含列表框的用户控件。然后我将此usercontrol嵌入另一个用户控件中。
public partial class MyClass : UserControl
{
private Thread myThread;
public MyClass()
{
InitializeComponent();
this.DataContext = this;
}
ObservableCollection<String> sampleData = new ObservableCollection<String>();
public ObservableCollection<String> SampleData
{
get
{
if (sampleData.Count <= 0)
{
sampleData.Add("1");
sampleData.Add("2");
}
return sampleData;
}
}
public void StartMyThread()
{
if (myThread == null)
{
myThread = new Thread(ThreadProgram);
myThread.Start();
}
}
private void UpdateFromThread(string text)
{
this.Dispatcher.Invoke((Action)(() =>
{
UpdateList(text);
}));
}
private void UpdateList(string text)
{
sampleData.Add(text);
}
private void ThreadProgram()
{
UpdateFromThread("my text");
//other stuff
}
包含列表框的用户控件的我的XAML包含:
<Grid>
<ListBox ItemsSource="{Binding Path=SampleData}"/>
</Grid>
和我嵌入我的控件的地方在这里:
<TabControl SelectionChanged="TabControl_SelectionChanged" Name="tabCtrl">
<TabItem Header="MyListboxTab">
<Service:MyClass Margin="0,0,-1,0"/>
</TabItem>
它最初用“1”和“2”更新,我可以使用消息框来显示文本。我已经检查过了,我对列表框的更新肯定被调用了,它们只是不显示。
还值得注意的是,从点击按钮调用sampleData.Add("clicked");
时列表会更新。
非常感谢任何帮助,谢谢。