我绑定了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的数据上下文设置为主窗口)。
答案 0 :(得分:1)
我设法重现了相关问题(我认为&#34;它不起作用&#34;意味着TextBox
中输入的值未被推送到您的视图模型)。我不确定确切的原因,但似乎在这种特定情况下,如果您没有明确设置Binding.UpdateSourceTrigger
,它默认(或至少像它一样)到UpdateSourceTrigger.Explicit
。因此,此问题的解决方案是将绑定上的UpdateSourceTrigger
明确设置为UpdateSourceTrigger.LostFocus
或UpdateSourceTrigger.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>