Форматирование и стилизация столбцов DataGrid

WPF
  1. 4 года назад
    Добавлено 4 года назад Alexandr_Erohin

    Александр, или тот, кто сможет помочь.
    У Вас в одноименной статье есть пример стилизации столбца.

    <DataGridTextColumn Header="Описание" Binding="{Binding Path=Description}" Width="350">
            <DataGridTextColumn.ElementStyle>
                   <Style TargetType="TextBlock">
                              <Setter Property="TextWrapping" Value="Wrap"></Setter>
                   </Style>
            </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>

    и ниже предложение : Чтобы применить один и тот же стиль к множеству столбцов, можно определить его в коллекции Resources и затем ссылаться на него в каждом столбце с использованием StaticResource.
    Вот покажите, пожалуйста , пример с двумя столбцами, где этот стиль вынесен в ресурсы. А то я себе уже весь череп сломал, и так и этак делал..
    Вот для примера. Я вынес в ресурсы

    <Style TargetType="TextBlock" x:Key="txtBlok" >
        <Setter Property="TextWrapping" Value="Wrap"></Setter>
    </Style>

    Ибо другое он в ресурсы выносить не хочет..
    а ссылаюсь соответственно

    <DataGridTextColumn Header="Вторник" Width="85" IsReadOnly="True"
                                                CellStyle="{StaticResource ResourceKey=txtBlok}"
                                                Binding="{Binding Path=timeDayVtr}" ></DataGridTextColumn>

    при попытке открыть этот Грид, выдает ошибку.. В чем моя ошибка???

  2. Alexandr_Erohin

    Nov 19 Администратор
    Добавлено 4 года назад Alexandr_Erohin

    Ошибка в использовании свойства CellStyle вместо ElementStyle, как указано в статье. Поменяй объявление DataGridTextColumn на следующее:

    <DataGridTextColumn ... ElementStyle="{StaticResource txtBlok}" ></DataGridTextColumn>

    CellStyle задается для ячейки таблицы и стиль тогда должен применяться к DataGridCell, а не TextBlock.

  3. Александр, биг сенкс.
    Еще раз перечитал статью, но не смог явно выделить этого момента... Может стоит подобный пример туда поместить? (хотя ,возможно, такое есть в разделе Стили и Ресурсы... я еще углублено не изучал этот раздел ) Дело в том, что я самоучка, и на все такие различия (лично мне ) надо хоть небольшой, но пример... Потому и приходится лопатить инет.. Но могу сказать, что почти по каждому моему запросу выходит Ваш сайт....

    Вот , кстати, еще один вопрос.
    У меня есть Дата Грид ( как вы уже наверно догадались). Он отображает анкеты.. Но иногда мне надо эти анкеты переносить в другой список, редактировать и т.д. Причем несколько одновременно. Для этого я завел DataGridCheckBoxColumn , где и отмечаю нужные анкеты. Но!!! Этот ЧекБоксКолумн мне нужен только в определенные моменты.Эти моменты возникают при определенных событиях ( например при нажатии на кнопку "создать группу" , или по переходу на этот Дата Грид с соответствующего раздела и т.д. )
    ВОПРОС - как его (DataGridCheckBoxColumn ) убрать/скрыть когда он не нужен, и ,соответственно, показать/открыть когда нужен?
    Можно, конечно, как вариант создать два Дата Грида.. но мне кажется есть более простой способ...

  4. Здравствуйте, попробуйте изменять свойство Visibility у Вашего DataGridCheckBoxColumn
    Получить Вашу колонку Вы можете по индексу:

    DataGrid.Columns[i].Visibility = Visibility.Hidden; // i-индекс столбца

    или по названию заголовка:

    DataGrid.Columns.First(c => c.Header.ToString() == "Описание").Visibility = Visibility.Hidden;
  5. Вот огромное Вам, человеческое Спасибо !!! ... Да, именно то, что мне и надо... Заодно узнал, как обращаться к столбцам Дата Грида.. )))

или зарегистрируйтесь чтобы ответить