所以我在这里非常困惑.
我创建了一个datagrid,以两种方式绑定其itemsource并以两种方式绑定其选定项.选中的项getter被调用,但setter永远不会.所有的作品似乎都在这里.我错过了什么?
<DataGrid ItemsSource="{Binding Properties ,Mode=TwoWay}"
SelectedItem="{Binding SelectedProperty ,Mode=TwoWay}"
CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False" Background="LightBlue">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Address" Binding="{Binding Address}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Units ,Mode=TwoWay}"
SelectedItem="{Binding SelectedUnit, Mode=TwoWay}"
CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False">
Run Code Online (Sandbox Code Playgroud)
我的第一个数据网格工作正常,包括所选项目.
但是,第二个第三个和第四个嵌套网格不会绑定到所选项目.物品来源有效,但就是这样
public class PropertyModel : ModelBase
{
private ObservableCollection<UnitModel> _Units;
public ObservableCollection<UnitModel> Units
{
get { return _Units; }
set { _Units = value; }
}
private UnitModel _SelectedUnit;
public UnitModel SelectedUnit
{
get { return _SelectedUnit; }
set { _SelectedUnit = value; OnPropertyChanged("SelectedUnit"); }
}
Run Code Online (Sandbox Code Playgroud)
输出窗口中没有显示绑定表达式错误或任何其他错误.
实际上答案很明显.
我忘了把UpdateSourceTrigger = PropertyChanged
所以看起来应该是这样的
<DataGrid ItemsSource="{Binding Units ,Mode=TwoWay}"
SelectedItem="{Binding SelectedUnit,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False">
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题
| 归档时间: |
|
| 查看次数: |
4810 次 |
| 最近记录: |