일부 데이터가 DataGrid에 표시되고 CollectionView에 바인딩됩니다. 바인딩은 정상적으로 작동하지만 읽기 전용 인 것 같습니다. 그리드의 확인란을 선택해도 모델이 업데이트되지 않습니다.WPF ICollectionView 양방향 바인딩?
감소 광고 absurdum이 :
public class Item
{
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
// Not hit when clicking on checkbox
_isChecked = value;
}
}
private bool _isChecked;
}
코드 뒤에, 내 컬렉션보기 종속성 속성입니다 :
private static DependencyProperty __CollectionViewProperty = DependencyProperty.Register
(
"_CollectionView",
typeof(ICollectionView),
typeof(MyClass),
new PropertyMetadata(null)
);
private ICollectionView _CollectionView
{
get { return (ICollectionView)GetValue(__CollectionViewProperty); }
set { SetValue(__CollectionViewProperty, value); }
}
그리고 다음과 같이 인스턴스화 다음 XAML에서
List<Item> items = new List<Item>();
items.Add(new Item());
this._CollectionView = CollectionViewSource.GetDefaultView(items);
, _CollectionView에 DataGrid를 바인딩하고 IsChecked에 체크 상자를 간단히 바인딩합니다. 예외는 없으며 IsChecked의 상태가 UI에 올바르게 반영됩니다.
그러나 확인란을 클릭하면 모델이 아닌 UI 만 업데이트됩니다. Cocoa에서 나온 WPF가 처음입니다. NSArrayController와 같은 바인딩을 사용하면 바인딩이 양방향으로 곧바로 작동합니다. 내가 뭘 놓치고 있니?
편집 : XML 코드 :
<DataGrid Grid.Row="1" ItemsSource="{ Binding _CollectionView}" AutoGenerateColumns="False" GridLinesVisibility="None"
RowHeight="60" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Hidden"
CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="True" IsSynchronizedWithCurrentItem="True"
x:Name="_DataGrid">
<DataGrid.Columns>
<DataGridTemplateColumn Header="" Width="90" CanUserSort="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsChecked}" Click="CheckBox_Click" HorizontalAlignment="Left"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGrid.Columns>
</DataGrid>
예, 시도해 봤지만 확인란을 클릭하면 설정자가 호출되지 않습니다 ... – Gregzo
xaml을 복사 할 수 있습니까? – MohamedHamza
추가됨. 클릭 이벤트도 모니터링하고 있었고, 잘 처리되었습니다. – Gregzo