C# 如何绑定所有列表框';是否将项目添加到同一属性?
我有一个带有以下数据模板的列表框:C# 如何绑定所有列表框';是否将项目添加到同一属性?,c#,wpf,mvvm,listbox,C#,Wpf,Mvvm,Listbox,我有一个带有以下数据模板的列表框: <DataTemplate x:Key="ItemTmp"> <Border Name="Border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5"> <Grid> <Grid.ColumnDefinitions>
<DataTemplate x:Key="ItemTmp">
<Border Name="Border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Item1}"></TextBlock>
<TextBlock Grid.Column="1" Text="{Binding Path=Item2}"></TextBlock>
<TextBox Grid.Column="2" Text="{Binding Path=UpdatedGrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay }" />
</Grid>
</Border>
</DataTemplate>
</UserControl.Resources>
也就是说,我希望每次用户在其中一个文本框中写入内容时,它都会更新ViewModel中的同一字段-UpdateGrade,问题是它不起作用
当我仅将单个文本框绑定到此字段时,它确实起作用,例如:
TextBox Grid.Row="3" Text="{Binding Path=UpdatedGrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay }"></TextBox>
TextBox Grid.Row=“3”Text=“{Binding Path=updategrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay}”>
有人知道我该怎么做吗?列表框项的DataContext是集合中单个项的数据上下文,因此它试图查找该项的属性 只要这不是windows应用商店应用程序,您就可以执行以下操作:
Text="{Binding Path=DataContext.UpdatedGrade, UpdateSourceTrigger=LostFocus, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=UserControl}}"
使用win8应用程序,您无法轻松找到祖先,因此您必须提供包含上下文的元素的名称
Text="{Binding Path=DataContext.UpdatedGrade, UpdateSourceTrigger=LostFocus, Mode=TwoWay, ElementName=MyUserControl}"
我不确定这将如何操作——直接绑定到文本框——它可能会在DataContext中更新UpdateGrade,但我也不确定
Text="{Binding Path=Text, UpdateSourceTrigger=LostFocus, Mode=TwoWay, ElementName=MyTextBox}"
您的第一个解决方案与我一起从双向更改为单向源似乎解决了它,感谢您的快速响应。