如何在WPF中设置标题而不刷新所有窗口页面

时间:2017-12-05 14:27:36

标签: c# wpf visual-studio

嗨! 我有一个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}}"

并且两者都不用。

请解决任何解决办法?

抱歉我的英文!

谢谢!

1 个答案:

答案 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";
}