【问题标题】:Databinding and bound buttons数据绑定和绑定按钮
【发布时间】:2011-04-07 15:31:43
【问题描述】:

我有一个绑定到对象列表的 ItemsControl。

它基本上在屏幕上显示绑定属性列表,每个属性旁边都有一个文本框和按钮,允许您向每个数据库字段添加额外信息。

在按钮的 onclick 中,我需要获取文本框中的字符串并将其存储在该项目的对象中。 XAML 看起来有点像这样

            <ItemsControl x:Name="ListDatabaseFields"  ItemsSource="{Binding Path=SelectedImport.ColumnMappings}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                        <Grid>
                                <StackPanel>
                                    <TextBlock Text="{Binding DatabaseColumn.Name}" TextWrapping="Wrap" Grid.Column="0"/>
                                    <TextBox Name="txtNewFileField" Width="100"/>
                                <Button Name="Add" Content="Add File Field" Style="{StaticResource LinkButton}" Width="50" Click="Add_Click"/>
                                </StackPanel>
                        </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

在 XAML 中访问 itemcontrol 为该项目绑定到的 ColumnMapping 并更改其文件字段属性的最佳方式是什么。

【问题讨论】:

    标签: wpf binding


    【解决方案1】:

    我不确定我是否正确理解了你的问题,如果这不是你要找的,请澄清一下。


    我已将它改编为我的测试应用程序,我的 DataTemplate 如下所示:

    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Name}"/>
            <TextBox MinWidth="100" Name="tbNewName"/>
            <Button MinWidth="100"
                    Tag="{x:Reference tbNewName}" Click="ButtonNewName_Click"
                    Content="Do Stuff"/>
        </StackPanel>
    </DataTemplate>
    

    注意引用TextBoxButton.Tag,我可以像这样在处理程序中使用它:

    private void ButtonNewName_Click(object sender, RoutedEventArgs e)
    {
        Employee emp = (sender as FrameworkElement).DataContext as Employee;
        TextBox tbNewName = (sender as FrameworkElement).Tag as TextBox;
        emp.Name = tbNewName.Text;
    }
    

    DataContext 是继承的,因此发送者(按钮)包含数据项,在您的情况下为 ColumnMappingTag 给了我TextBox,这就是我更改属性。

    如果您需要引用更多控件,您可以在Tag 中创建一个数组。

    【讨论】:

      猜你喜欢
      • 2017-07-30
      • 1970-01-01
      • 2017-07-22
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多