뷰 모델 접근 방식을 사용하면의 속성을 포함하는 뷰 모델,에 대해 구속하도록 설정, 다음 뷰를이
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Orientation="Vertical">
<sdk:DataGrid AutoGenerateColumns="False" Height="151" HorizontalAlignment="Left" Margin="52,67,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="190"
ItemsSource="{Binding Items}">
<sdk:DataGrid.Columns>
<sdk:DataGridCheckBoxColumn Binding="{Binding IsSelected}"/>
<sdk:DataGridTextColumn Binding="{Binding Name}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<Button Content="What is selected?" Width="300" Click="Button_Click"/>
</StackPanel>
</Grid>
같은 뷰를 정의 할 수 있습니다 당신의 PagedCollectionView : 내가 아니라, 내가 추한의 조각을 넣어 솔루션을 알 수 없기 때문에 지금
public class ViewModel
{
private PagedCollectionView _items = new PagedCollectionView(
new[]
{new MyItem{Name="Item 1"},
new MyItem{Name="Item 2"},
new MyItem{Name="Item 3"},
new MyItem{Name="Item 4"} });
public PagedCollectionView Items
{
get { return _items; }
}
public string GetSelectedItems()
{
return "Selected items: " +
string.Join(",",
Items.Cast<MyItem>().Where(x => x.IsSelected).
Select(x => x.Name));
}
}
, 코드 코드 숨김 단지 선택 추적하는 것이 방법을 보여줍니다 :
private void Button_Click(object sender, RoutedEventArgs e)
{
var viewModel = DataContext as ViewModel;
MessageBox.Show(viewModel.GetSelectedItems());
}
이보기를 연결 및 뷰 모델이 함께보기, 뷰 모델을 생성하여 수행 한 다음의 DataContext에 속성과 함께 스티치 전망. 마찬가지로 :
var view = new MyWindow();
var viewModel = new ViewModel();
view.DataContext = viewModel;
그 예제를 작동시켜야합니다.
DataGrid를 바인딩 할 대상은 무엇입니까? 나는이 아이템들이 "Checked"또는 "Selected"라는 속성을 가진 몇몇 데이터 아이템으로 뷰에 바인딩 된 뷰 모델을 제안했다. 그런 다음 해당 속성에 대해 확인란을 바인딩하면 코드 숨김에 의존 할 필요가 없습니다. –
재생 해 주셔서 감사합니다. domaincontext의 loadoperation으로 채워져 있습니다. 그러나 모든 것은 하나의 버튼 클릭으로 모든 행을 선택하고 확인란을 true로 설정하려고 할 수 있습니다. 내가 뒤에있는 코드로 그걸 할 수 있을까? – Arni
예,보기 모델에 모든 항목이있는 경우 단추를 바인딩 할 명령을 작성해야합니다. 그런 다음 뷰 모델에서 PagedCollectionView의 모든 항목을 반복하고 "Selected"속성 (또는 호출 된 항목)을 true로 설정합니다.INotifyPropertyChanged를 사용하면 거기에서 작동합니다. –