我以前从另一个类更新UI时遇到问题;
这是我的情况。
首先,我将这个名为PersonalData的类
namespace WPF_APPLICATION
public class PersonalData
{
private string iDNumber;
private string firstName;
public PersonalData()
{
}
public string IDNumber
{
get
{
return iDNumber;
}
set
{
iDNumber = value;
}
}
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
}
PersonalData由FirstPage.xaml.cs
创建namespace WPF_APPLICATION
public partial class FirstPage
{
PersonalData person;
public FirstPage()
{
InitializeComponent();
person = new PersonalData();
person.IDNumber = "1659880";
}
private void firstBTN_Click(object sender, RoutedEventArgs e)
{
person.Firstname = "John";
}
}
我想要的是我希望每次按下按钮或更改属性时,由FirstPage.xaml.cs创建的Object人员将更新UI到另一个页面(例如SeconePage.xaml,ThirdPage.xaml)。
我尝试过INotifyPropertyChanged但它不起作用,可能是我错过了WPF的一些概念。
这是我尝试过的SeconePage.xaml。
<Page x:Class="WPF_APPLICATION.SeconePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPF_APPLICATION"
xmlns:m="clr-namespace:WPF_APPLICATION"
mc:Ignorable="d"
d:DesignHeight="240" d:DesignWidth="1080"
Title="ScalePage">
<Page.Resources>
<m:PersonalData x:Key="myperson"/>
</Page.Resources>
<Grid DataContext="{Binding Source={StaticResource myperson}}" Background="#eee">
<TextBox x:Name="Value1" Text="{Binding IDNumber}"/>
<TextBox x:Name="Value2" Text="{Binding FirstName}" Margin="0,40"/>
</Grid>
</Page>
实施INotifypropertyChanged的个人类
namespace WPF_APPLICATION
public class PersonalData : INotifyPropertyChanged
{
private string iDNumber;
private string firstName;
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public PersonalData()
{
}
public string IDNumber
{
get
{
return iDNumber;
}
set
{
iDNumber = value;
OnPropertyChanged("IDNumber");
}
}
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
OnPropertyChanged("FirstName");
}
}
}
提前谢谢。
答案 0 :(得分:0)
我可以给你一个好的解决方案,你可以继续使用但是不是解决问题的最佳方法。
要打开一个新的 Window ,您需要一个 View 的实例,例如:
SeconePage seconePage = new SeconePage();
现在,您可以使用以下代码显示新的 Window :
seconePage.Show();
首先为当前窗口创建新变量:
public int currentWindow = 1;
然后为要显示的 Windows 创建一个方法:
public void ShowNextWindow(int window)
{
switch (window)
{
case 2:
SeconePage seconePage = new SeconePage();
seconePage.Show();
currentWindow += 1;
break;
case 3:
ThirdPage thirdPage = new ThirdPage();
thirdPage.Show();
currentWindow += 1;
break;
}
}
现在转到个人课程并将ShowNextWindow();
添加到您的二传手。看起来应该是这样的:
public string IDNumber
{
get
{
return iDNumber;
}
set
{
iDNumber = value;
ShowNextWindow(currentWindow);
OnPropertyChanged("IDNumber");
}
}
现在,如果值发生变化,将显示下一个 Window 。
只需在应该切换视图的按钮上执行ShowNextWindow(currentWindow);
。