在DataGridTemplateColumn中绑定DataTemplate控件

时间:2017-06-07 08:20:46

标签: wpf binding

我绑定了DataGrid,其中Items是ObservableCollection对{Prop1,Prop2}

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
                   <DataGrid.Columns>
                        <DataGridTemplateColumn>
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox >
                                        <TextBox.Text>
                                            <Binding Path="Prop1">
                                            </Binding>
                                        </TextBox.Text>   
                                    </TextBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

如何将TextBox Text属性绑定到Prop1?我尝试如上所示,但它不工作(看起来像TextBox的数据上下文设置为主窗口)。

1 个答案:

答案 0 :(得分:1)

我设法重现了相关问题(我认为&#34;它不起作用&#34;意味着TextBox中输入的值未被推送到您的视图模型)。我不确定确切的原因,但似乎在这种特定情况下,如果您没有明确设置Binding.UpdateSourceTrigger,它默认(或至少像它一样)到UpdateSourceTrigger.Explicit。因此,此问题的解决方案是将绑定上的UpdateSourceTrigger明确设置为UpdateSourceTrigger.LostFocusUpdateSourceTrigger.PropertyChanged

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Prop1, UpdateSourceTrigger=LostFocus}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
相关问题