2013-10-03 5 views
1

Я разместил вопрос о отображении двух столбцов с использованием лямбда в WPF, хотя я получил отличные рекомендации, я считаю, что я пытался сделать вещи более сложными, поэтому я придерживаюсь другого подхода. Мой Silverlight приложение бизнес заполняющую datagrid1 использованиемСкрыть столбцы по команде

DBDomainContext context = new DBDomainContext(); 

dataGrid1.ItemsSource = context.DBTables; 
context.Load(context.GetDataBasesQuery()); 

Метод GetDataBasesQuery() определяется в domainservices.cs следующим образом:

public IQueryable<DBTable>GetDataBases() 
{ 
return this.ObjectContext.DBTables; 
} 

Это заселить datagrid1 с 10 столбцов, используя, AutoGenerateColumns="True"

И Я могу скрыть столбцы следующим образом:

void DGPro_AutoGeneratingColumnForDB(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
if (e.PropertyName == "col1") 
       e.Cancel = true; 

if (e.PropertyName == "col2") 
       e.Cancel = true; 

} 

Как скрыть их на основе пользовательского ввода? Я хотел бы использовать флажок для выбора пользователем col1 или col2, чтобы скрыть. Ваша помощь очень признательна.

+2

Не создавайте автоматическое создание столбцов, создавайте их самостоятельно, а затем вы можете получить к ним доступ по имени и скрыть/показать их по мере необходимости. – OneFineDay

ответ

0

Расширение @ хорошее предложение DOÑA немного, вы можете попробовать изменить обработчик событий автоматического поколения к следующему:

private void DGPro_AutoGeneratingColumnForDB(object sender, 
DataGridAutoGeneratingColumnEventArgs e) 
{ 
    e.Name = e.PropertyName; 
} 

Затем, используя имена свойств/столбцов, вы должны быть в состоянии просто позвонить:

var column = dataGrid.Columns.First(c => c.Name = "col1"); 
column.Visibility = Visibility.Collapse; 

к сожалению, я не был в состоянии проверить это, так что может не работать.

+0

Хорошие предложения я дам ему мир. Еще раз спасибо .. – user2835586

+0

Hi Sheridan, Я попробовал ваше предложение, но пока не повезло. Я все еще боюсь .. – user2835586

+0

Какая часть этого не работает? Разве столбцы получили название «ОК»? Вызвал ли 'First'« Исключение », говоря, что в последовательности не было элементов? – Sheridan

Смежные вопросы