查找TextBox.Text是否被用户或代码更改(Windows Phone 8)

时间:2013-10-13 18:09:29

标签: c# windows-phone-8

我有一个转换值的Windows Phone 8项目(即:Celsius到Fahrenheit)。有两个TextBox UI元素,其中一个是只读的。用户可以更改第一个TextBox以输入要转换的值。他还可以按一个按钮“交换”两个TextBox,以便他可以进行反向转换。当用户按下按钮时,第二个TextBox的值进入第一个TextBox(反之亦然)。但是改变价值的不是用户,而是代码。

我询问(在IRC上)并研究了这个主题,但我是初学者,无法理解我发现的大部分内容。

我听说一个简单的解决方案是使用数据绑定。我研究了这个主题,从我读到的,数据绑定无法解决我的问题(如果我错了,请纠正我)。

我还尝试创建TextBox的子类,希望我可以将一些自定义事件挂钩到该方向并进一步朝这个方向发展。但我不明白如何将自定义TextBox链接到UI(在XAML中)。我创建子类的方法是创建一个新类并添加TextBox作为父类。我知道在VS中有一个模板来创建一个新的用户控件,我试过了,但是我无法理解我在做什么(或者我应该做什么)。

所以我有两个问题:我是否从正确的角度看问题?如果是,我如何创建自定义TextBox并将其链接到UI?如果没有,我怎么能解决我的问题?

1 个答案:

答案 0 :(得分:1)

如果您的问题是如何区分文本是否被用户或代码更改,那么它很简单。

假设当用户键入您要执行方法A的某些内容但是当代码更改了您要执行方法B的文本时:

在这两种情况下,您都需要覆盖TextBox.TextChanged()事件处理程序。

您还需要一个标志变量来告诉您是否按下了交换按钮。

事件处理程序应该是这样的:

{
    if (swap_pushed)
    {
        Method_B();
        swap_pushed = false;
    }
    else
    {
        Method_A();
    }
}

最后,交换Button.Click()的事件处理程序应如下所示:

{
    swap_pushed = true;
}