我将C#(WPF)用于将人员添加到列表中的项目;很简单。但是,在使用表单将人员添加到列表后,我需要使用主表单来更新",例如,我希望使用括号中的人数更新一个选项卡文本,我会这样做:
((TabItem)tabControl.Items[0]).Header = "All Patients ("+ newPatientList.Count.ToString() + ")";
如果列表已经填充,则此方法有效,但如果我在应用程序运行时使用我的表单手动添加到列表,则不会自行更新。
相关代码: MainWindow,打开表单添加人员列表
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 addPx = new Window1(this);
addPx.Show();
}
Window1,手动将人员添加到列表
public MainWindow Main { get; set; }
public Window1(MainWindow main)
{
InitializeComponent();
this.Main = main;
}
private void adpxbtn_Click(object sender, RoutedEventArgs e)
{
if (lstname.Text != string.Empty || frstname.Text != string.Empty || age.Text != string.Empty ||
rm.Text != string.Empty || status.SelectedValue != null)
{
Main.AddNewPatient(lstname.Text, frstname.Text, int.Parse(age.Text), rm.Text, "", int.Parse(status.SelectedItem.ToString()));
this.Close();
} else
{
MessageBox.Show("You're missing some information!");
}
}
那我怎么能让主窗口知道刷新信息呢?当我需要显示此列表并在添加/删除人员时将其自动更新时,这将变得特别有用。
谢谢
答案 0 :(得分:1)
通过您在XAML中绑定的newPatientList
中的公共属性展示MainWindow.xaml.cs
。它应该是ObservableCollection<T>
:
public ObservableCollection<Patient> newPatientList { get; } = new ObservableCollection<Patient>();
然后,您可以绑定到XAML中的Count
属性:
<TabItem>
<TabItem.Header>
<TextBlock>
<Run Text="All Patients (" /><Run Text="{Binding Path=newPatientList.Count, RelativeSource={RelativeSource AncestorType=Window}, Mode=OneWay}" /><Run Text=")" />
</TextBlock>
</TabItem.Header>
</TabItem>
...而不是这样做(从代码中删除以下内容):
((TabItem)tabControl.Items[0]).Header = "All Patients ("+ newPatientList.Count.ToString() + ")";