DataSource ile DataTable içeren DataGrid'im var. Sütun sayısı zaman zaman farklıdır. Bir sütunun DataType'ı A sınıfıysa Hücre içeriğinin görünümünü özelleştirmek için bir DataTemplate kullanmak istiyorum. DataTable tüm sütunlar oluşturulur, böyleceWPF DataGrid - DataTemplate DataTemplate içinde DataTable hücresine VeriTemplate
Ben DataGrid üzerinde
AutoGenerateColumns="True"
belirledik. VeriTürü tipi DataTemplate şöyle görünür bir
private void DataGrid_AutoGeneratingColumn(object sender, system.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(A))
{
e.Column = new DataGridTemplateColumn
{
CellTemplate = (DataTemplate)Resources["ATemplate"],
Header = e.Column.Header,
HeaderTemplate = e.Column.HeaderTemplate,
HeaderStringFormat = e.Column.HeaderStringFormat
};
}
}
arasında ise
Bir DataGridTemplateColumn ile DataGridColumn değiştirin.
<DataTemplate x:Key="ATemplate">
<RadioButton Content="{Binding Name}" GroupName="{Binding GroupName}" IsChecked="{Binding IsSelected}" />
</DataTemplate>
radiobuton gösterilir ama
BindingExpression path error: 'IsSelected' property not found on 'object' ''DataRowView'
Sınıf A gibi, tüm özellikler için bağlama hataları almak i sağa DataTemplate databind nasıl bu
public class A
{
public string Name { get; set; }
public string GroupName { get; set; }
public bool IsSelected { get; set; }
}
benziyor hücre ve özellik?
hiçbir şans ile de bu çözüm denedidüzenle (ben çok iyi olurdu DataGrid_AutoGeneratingColumn kullanmak gerekmez olduğu bir MVVM çözümü varsa). Sınıfa nasıl işleneceğini bilmediğinde, her zamanki gibi hücrede yalnızca sınıf adı gösterilir.
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Items}">
<DataGrid.Resources>
<DataTemplate DataType="{x:Type viewModel:A}">
<RadioButton Content="{Binding Path=Name}" GroupName="{Binding Path=GroupName}" IsChecked="{Binding Path=IsSelected}" />
</DataTemplate>
</DataGrid.Resources>
</DataGrid>
Evet üzgünüm, kötü ... bu işe yaramaz. – Sheridan