DataGrid와 ListView 간의 양방향 바인딩 처리시 불일치를 이해하는 데 문제가 있습니다. 하위 목록에 addeDataGrid와 ListView 간의 양방향 바인딩
public class DataItem
{
public bool Flag { get; set; }
public int IntValue { get; set; }
public string StringValue { get; set; }
public List<DataItem> SubList { get; set; }
public DataItem()[...]
}
내가 추가있는 DataItem 개체의 번호와 주요있는 DataItem 개체를 만들 : 설명하기 위해, 나는 몇 가지 속성을 가진 클래스있는 DataItem 및 데이터 그리드/ListView에 바인딩에 대한 DataItems의 목록을 . 주요있는 DataItem이 포함 된 그리드의 DataContext를 설정하고, 하위 목록은 모두의 ListView에 바인딩 :
<ListView ItemsSource="{Binding Path=SubList}">
<ListView.View>
<GridView>
<GridViewColumn Header="Flag" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="FlagCheckBox" IsChecked="{Binding Path=Flag}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="String Value" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Name="StringTextBox" Text="{Binding Path=StringValue}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
및 데이터 그리드에 :
<DataGrid ItemsSource="{Binding Path=SubList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Flag" Width="SizeToCells">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="FlagCheckBox" IsChecked="{Binding Path=Flag}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="String Value" Width="SizeToCells">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Name="StringTextBox" Text="{Binding Path=StringValue}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
ListView에 모두 제대로 표시하려면 데이터 그리드 SubList 항목 그러나 UI의 데이터를 수정하고 소스 DataItem.SubList를 검사하면 ListView가 작동하고 DataGrid가 다음 작업을 수행하지 않습니다. ListView에서 변경 사항을 볼 수 있지만 DataGrid에는 변경 사항이 없습니다.
바인딩이 정확해야합니다. 그렇지 않으면 값이 제대로 표시되지 않습니다. 그러나 몇 가지 이유로 ListView에서 양방향 바인딩이 작동하여 UI에서 변경 한 내용을 원본 개체로 되돌리고 DataGrid에서는 다시 이동할 수 없습니다.
덕분에,이 보인다. UpdateSourceTrigger의 기본 설정은 소스를 업데이트하지 않는 것입니다. – garzooma