将datagrid中的所有Texbox绑定到字符串

时间:2016-08-22 11:43:03

标签: wpf datagrid

我想将所有文本框从datagrid绑定到string列表。我不知道怎么做。 我在datagrid的一列中有文本框:

<DataGrid ItemsSource="{Binding Data}">
  <DataGridTextColumn Binding="{Binding Title}" Header="Title" IsReadOnly="True">
DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Width="60" Text="{Binding DataList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></TextBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
</DataGridTextColumn>
</DataGrid>

在ViewModel中:

    public ObservableCollection<DataObject> Data //datasource
    {
        get { return _data;}
        set { _data = value; OnPropertyChanged(nameof(Data)); }
    }

    public ObservableCollection<string> DataList //here must be data from textboxes
    {
        get { return _dataList; }
        set { _dataList = value; OnPropertyChanged(nameof(DataList)); }
    }

为简单起见,我没有在这里写命令。在命令的操作方法中,DataList属性仍为空。

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

echo "'yes' 'new' 'this is a comment'" | cc_update -m LATEST -f

写入转换器,用于将字符串集合转换为单个字符串。

<DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="False">
    <DataGrid.Resources>
        <local:CollectionToStringConverter x:Key="CollectionToStringConverter"/>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Title" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding DataContext.DataList,Converter={StaticResource CollectionToStringConverter},RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

感谢WPF textblock binding with List