嗨! 我有一个WPF应用程序,我想设置窗口页面的标题而不刷新所有页面,因为在这个页面中我有两个按钮,当我按下它时列出DataRow属于标题。
void refreshStatusBar()
{
this.Title= "Holaaa";
}
WPF课程:
<Height=.... Title="Prueba"...> the initial value
问题是,当我按下一个按钮(下一个或后面)时,我需要设置页面标题,并且在我调用btNext或btBack方法中的refreshStatusBar()时永远不会改变。
我试图绑定标题,但不起作用。始终显示相同的值,初始:
Title="{Binding Path="windowTitleBar"}"
public String windowTitleBar {get; set;}
void refreshStatusBar(){
windowTitleBar="Holaaa";
}
当我按下某个按钮时,我希望更改标题。窗口页面里面没有页面,只显示一件事或者其他事情。
我也试过了:
Title="{Binding Path=windowTitleBar, RelativeSource={RelativeSource Mode=Self}}"
并且两者都不用。
请解决任何解决办法?
抱歉我的英文!
谢谢!
答案 0 :(得分:1)
这对我来说没有约束力:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.Title = "Hellooo";
}
void RefreshStatusBar()
{
this.Title = "Holaaa";
}
private void button1_Click(object sender, RoutedEventArgs e)
{
RefreshStatusBar();
}
}
如果您想使用绑定,请像使用Title="{Binding Path=WindowTitleBar, RelativeSource={RelativeSource Mode=Self}}"
但实际上,WPF无法知道您的财产价值何时发生变化。您可以实施INotifyPropertyChanged
来解决此问题:
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string _windowTitleBar = "Hellooo";
public MainWindow()
{
this.WindowTitleBar = "Hellooo";
InitializeComponent();
}
public string WindowTitleBar
{
get { return _windowTitleBar; }
set
{
_windowTitleBar = value;
OnPropertyChanged("WindowTitleBar");
}
}
void RefreshStatusBar()
{
this.WindowTitleBar = "Holaaa";
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void button1_Click(object sender, RoutedEventArgs e)
{
RefreshStatusBar();
}
}
我刚注意到你说“Page”。我从未使用过Pages,但看起来要设置包含页面的窗口标题,您必须设置WindowTitle
属性。不幸的是,它不是DependencyProperty,所以你不能使用绑定。不过你可以直接设置它:
void RefreshStatusBar()
{
this.WindowTitle = "Holaaa";
}