2012-10-06 22 views
6

DataGrid'de satırların listesini nasıl alabilirim? Bağlı öğeler değil, DataGridRows listesi.Datagrid satırları al

Bu satırların görünürlüğünü denetlemem gerekiyor ve bunu yalnızca bir veri nesnesi olarak değil, DataGridRow olarak denetlemek mümkün.

Teşekkürler!

cevap

22

Satırı ItemContainerGenerator kullanarak alabilirsiniz. Bu çalışması gerekir - Ben onun Görünürlük görüntülenmeden veya olmasın gerekip gerekmediğini bağlı olacaktır DataGridRow için Stil tanımlayan tavsiye

for (int i = 0; i < dataGrid.Items.Count; i++) 
{ 
    DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator 
               .ContainerFromIndex(i); 
} 
+7

Bir şey sanallaştırma (varsayılan olarak olan) açıkken, olacak o Oluşturulmamış satırlar için null. Bu, DataGrid'inizde 'VirtualizingStackPanel.IsVirtualizing = 'False' 'seçeneğini belirlemedikçe, tüm satırlarda tek satırda yineleme yapamayacağınız anlamına gelir, ancak bu durum, ızgara performansınızın düşük olmasına neden olabilir. –

0

. Sadece RV1987'nin cevabında bahsettiğim gibi, satırları tekrarlamak yeterli olmayacaktır.

<DataGrid> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridRow"> 
      <Setter Property="Visibility" Value="{Binding ...}" /> 
     </Style> 
    </DataGrid.Resources> 
</DataGrid> 

DÜZENLEME: Eğer bağlamak ne

Eğer satır göstermesi gerekir olsun veya olmasın bilgisini tutun yere bağlıdır. ciltlenmiş koleksiyonunda her veri nesnesi bir bool ShouldBeDisplayed özelliği vardır Örneğin, böyle bir şey olurdu: Burada dikkat edilmesi gereken

<DataGrid> 
    <DataGrid.Resources> 
     <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" /> 

     <Style TargetType="DataGridRow"> 
      <Setter Property="Visibility" Value="{Binding Path=ShouldBeDisplayed, Converter={StaticResource booleanToVisibilityConverter}}" /> 
     </Style> 
    </DataGrid.Resources> 
</DataGrid> 
+0

Neyin bağlanması? Bu bir uielemnt değil ... daha spesifik olabilir misiniz? – user196625

+0

@ user196625 Cevabımı güncelledi. Umarım bu daha açıktır. –

+0

Ben – user196625