我已经创建了一个带有NavigationWindow的应用程序,并在其中加载了页面。这也是该项目中的另一个(正常)窗口。这些窗口/页面的名称:
NavigationWindows: MainWindows
Page: Page1
Window: TwitterConnect
Label on Page: label4
Run Code Online (Sandbox Code Playgroud)
我的Page1上有一个标签,我想从TwitterConnect更改它。因为我创建了Page1的新实例来调用方法ConnectToTwitter(),所以页面上的标签不会更新。这是TwitterConnect背后代码中的代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
string pin = twitpin.Text;
Page1 page = new Page1();
page.ConnectToTwitter(pin, genratedToken);
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
我在Google上搜索以找到解决方案,但我不明白。我认为这与Dispatcher有关?!
我真的是C#,VS10express和WPF的初学者。
如何从TwitterConnect更改label4?您能用一小段代码解释一下吗?
您正在从TwitterConnect窗口中创建Page1.xaml的新实例。您需要做的是找到一种访问Page1.xaml当前实例的方法,该方法可以通过使用Window类的DataContext属性轻松实现。
Page1.xaml.cs
private void Page_Loaded(object sender, RoutedEventArgs e)
{
TwitterConnect twitterWindow = new TwitterConnect();
// this gives TwitterConnect access to Page1's label4 property
twitterWindow.DataContext = this;
twitterWindow.Show();
}
Run Code Online (Sandbox Code Playgroud)
TwitterConnect.xaml.cs
private void ButtonClick(object sender, RoutedEventArgs e)
{
Page1 page1 = (Page1)this.DataContext;
string pin = twitpin.Text;
page1.ConnectToTwitter(pin, genratedToken);
// Then you can update the label like so:
page1.Label4.Text = "The text you want to display on the label";
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
如果我错过了任何事情,请告诉我。另外,我强烈建议您不要使用此配置,因为它可能成为维护的噩梦。一个更好的办法可能是添加一个方法或属性到Page1.cs处理设置上的文字label4。
| 归档时间: |
|
| 查看次数: |
4880 次 |
| 最近记录: |