0

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

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

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

我还尝试创建一个 TextBox 的子类,希望我可以将一些自定义事件挂接到它,并朝着这个方向走得更远。但我不明白如何将自定义 TextBox 链接到 UI(在 XAML 中)。我创建子类的方式是创建一个新类并将 TextBox 添加为父类。我知道 VS 中有一个模板可以创建一个新的用户控件,我试过了,但我不明白我在做什么(或者我应该做什么)。

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

4

1 回答 1

1

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

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

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

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

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

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

最后,您的交换 Button.Click() 事件处理程序应该是这样的:

{
    swap_pushed = true;
}
于 2013-10-13T19:57:32.483 回答