数据绑定和绑定按钮

时间:2011-04-07 15:31:44

标签: wpf binding

我有一个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中访问ColumnMapping的最佳方式,itemcontrol绑定到该项并更改其文件字段属性。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题,请澄清这不是你想要的。


我已将此修改为我的测试应用程序,我的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>

注意引用Button.Tag的{​​{1}},我可以在处理程序中使用它,如下所示:

TextBox

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; } 是继承的,因此发件人(Button)包含数据项,在您的情况下为DataContextColumnMappingTag提供了TextBox这就是改变房产所需要的一切。

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