列表框项目与模板之间的XAML通信?

时间:2013-11-09 13:02:32

标签: c# xaml templates

我正在尝试解决列表框中项目与模板之间的通信问题。让我们说我有模板:

<DataTemplate x:Key="Template">
    <StackPanel HorizontalAlignment="Stretch">
        <TextBox Name="A" FontSize="17" Margin="5,5,5,1"></TextBox>
        <TextBox Name="B" FontSize="15" Margin="5,0,5,1"></TextBox>
    </StackPanel>
</DataTemplate>

当我在Textbox B上键入数据并按ENTER时,我调用将类型文本发送到Textbox A的方法。问题是我如何为列表框项目中的模板项创建这样的keydown metod以及如果我能不止一个项目?

2 个答案:

答案 0 :(得分:0)

为什么不尝试像这样绑定

<DataTemplate x:Key="Template">
    <StackPanel HorizontalAlignment="Stretch">
        <TextBox Name="A" Text="{Binding Text, ElementName=B}" FontSize="17" Margin="5,5,5,1" />
        <TextBox Name="B" FontSize="15" Margin="5,0,5,1" />
    </StackPanel>
</DataTemplate>

答案 1 :(得分:0)

让我说我明白了。但它有点问题。它的Windows 8存储应用程序,我想我不能像WPF一样处理这个问题。多数民众赞成我是如何做到的:

                    var parent = ((TextBox)sender).Parent;
                var child = VisualTreeHelper.GetChild(parent, 1);
                TextBox text = (TextBox)child;
                text.Text += Client.Settings.Account + ": " + ((TextBox)sender).Text + "\n";
                ((TextBox)sender).Text = string.Empty;

而另一个问题是另外两个问题:

  • 当我更改模板时,一切都将被破坏。
  • 假设我想要了解特定TextBox中的具体Item A我不知道如何实现它。我的意思是我有IncomingMessage方法,我需要找到与我联系的项目,并将他的信息发送到他的TextBox A.