Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Phone文本框控件前景和背景笔刷未正确更新_C#_Windows Phone 7_Windows Phone 8 - Fatal编程技术网

C# Windows Phone文本框控件前景和背景笔刷未正确更新

C# Windows Phone文本框控件前景和背景笔刷未正确更新,c#,windows-phone-7,windows-phone-8,C#,Windows Phone 7,Windows Phone 8,TLDR:当通过触摸输入手动选择时,我的文本框将正确更新其前景色和背景色,但如果在创建文本框后使用Textbox.Focus()方法,则无法更新 问题与此类似— 我的应用程序创建了一个带有相关GotFocus事件的文本框,每当文本框接收到焦点时,该事件会将文本框的前景色和背景色更改为系统默认值。当用户按下键盘上的enter键时,应用程序会在第一个文本框下方生成另一个相同的文本框 问题是,对于这些文本框中的任何一个,如果手动按下文本框,一切都会正常工作,文本框的显示方式也会正常。但是,如果在按下

TLDR:当通过触摸输入手动选择时,我的文本框将正确更新其前景色和背景色,但如果在创建文本框后使用Textbox.Focus()方法,则无法更新

问题与此类似—

我的应用程序创建了一个带有相关GotFocus事件的文本框,每当文本框接收到焦点时,该事件会将文本框的前景色和背景色更改为系统默认值。当用户按下键盘上的enter键时,应用程序会在第一个文本框下方生成另一个相同的文本框

问题是,对于这些文本框中的任何一个,如果手动按下文本框,一切都会正常工作,文本框的显示方式也会正常。但是,如果在按下enter键后使用TextBox.Focus(),尽管焦点会传递到TextBox,并且GotFocus事件已经处理,但背景和前景颜色不会更新,将白色文本保留在白色背景上

我已经多次尝试在文本框之间传递焦点(最多10次),尽管我可以确认焦点是按应有的方式传递的,但只有当用户将焦点交给文本框时,颜色才会更新(如果我通过代码将焦点赋予文本框,我必须手动取消选择,然后重新选择它以应用颜色更改。如果我不通过代码将焦点赋予文本框,我可以简单地选择它)

这方面的代码是:

public void txtInputKeyUp(object sender, KeyEventArgs e)
{
    TextBox txtBox = (TextBox)sender;
    if (e.Key == Key.Enter)
    {
        Evaluate(txtBox);
        InitializeDivider();
        InitializeTextInput();
        InitializeTextOutput();
        txtInput[txtInput.Length - 1].Focus();
    }
}

public void txtInputGotFocus(object sender, RoutedEventArgs e)
{
    TextBox txtBox = (TextBox)sender;
    if(txtBox.Text == "Input Here")
    {
        txtBox.Text = "";
    }
    txtBox.Foreground = (SolidColorBrush)App.Current.Resources["PhoneForegroundBrush"];
    txtBox.Background = (SolidColorBrush)App.Current.Resources["PhoneBackgroundBrush"];
}

InitializeLabla基本上只是创建相关的文本框和所有相关数据。我尝试在文本框之间切换焦点,禁用和启用指定的文本框和一些其他选项,唯一有效的方法是不通过代码将焦点赋予文本框,而是等待用户选择文本框,我不太满意。尝试手动编辑样式也没有帮助。

我最终的解决方案是在应用程序中添加一个间隔很短的计时器(足够短,使更改不可见),并在文本框收到焦点后更改文本框的颜色