在Windows商店应用程序中轻松进行数据输入的方法

时间:2013-11-12 09:13:26

标签: c# xaml windows-8.1

我正在做一个简单的Windows 8商店应用,我希望只需点击一下(点击)进行编辑。

我正在思考一些事情;

void editProducer(object sender, DoubleTappedRoutedEventArgs e)
{
    var t = new TextBox() {FontSize = 48, Width = 600, DataContext = DataModel.Producer};
    var f = new Flyout() {Content = t};
    f.ShowAt((FrameworkElement)sender);
}

但我无法得到一个有效的版本。

我错过了什么(我尝试添加绑定失败了)?或者尝试这样做是完全错误的吗?

更新;

这段代码几乎看起来好像会起作用,并且更接近原来的方向,但仍然没有用;

var srcTextBlock = sender as TextBox;
var d = srcTextBlock.GetBindingExpression(TextBlock.TextProperty);
var t = new TextBlock() { FontSize = 48, Width = 200 };
t.SetBinding(TextBlock.TextProperty, d.ParentBinding);
var f = new Flyout() { Content = t };
f.ShowAt((FrameworkElement)sender);

所以我最终根据建议的方向最终选择了类似的东西;

var tb = (TextBox) sender;
tb.IsReadOnly = false;
tb.SelectedText = tb.Text;
tb.LostFocus += (o, args) => { tb.IsReadOnly = true; };

1 个答案:

答案 0 :(得分:0)

更简单的方法是使用一个简单的TextBox,其自定义样式在禁用时看起来像TextBlockIsEnabled为false)。

那么你只需要将这个事件附加到你的文本字段以使其工作(双击):

void editProducer(object sender, DoubleTappedRoutedEventArgs e)
{
  (sender as TexBlock).IsEnabled = ! (sender as TexBlock).IsEnabled
}