Как я включаю перенос текста на всех заголовках столбцов?

Если Вы хотите обратиться к глобальной переменной в функции, можно использовать глобальный ключевое слово для объявления, какие переменные глобальны. Вы не должны использовать его во всех случаях (как кто-то здесь неправильно утверждает) - если имя, на которое ссылаются в выражении, не может быть найдено в локальном объеме или объемах в функциях, в которых определяется эта функция, это ищется среди глобальных переменных.

Однако, если Вы присваиваете новой переменной, не объявленной столь же глобальной в функции, она неявно объявляется как локальная, и она может омрачить любую существующую глобальную переменную с тем же именем.

кроме того, глобальные переменные полезны вопреки некоторым зилотам ООП, которые требуют иначе - специально для меньших сценариев, где ООП является излишеством.

33
задан Bo Persson 25 August 2011 в 21:02
поделиться

3 ответа

Вместо того, чтобы назначать имя столбца непосредственно свойству DataGridColumn.Header, я создал TextBlock, содержащий имя столбца, установил для свойства TextWrapping TextBlock значение «Wrap» и назначил TextBlock элементу DataGridColumn.Header свойство. Это сохраняет функциональность заголовка по умолчанию.

Пример:

<toolkit:DataGridTextColumn Binding="{Binding Path=MyProperty}">
    <toolkit:DataGridTextColumn.Header>
        <TextBlock Text="Something Longer" TextWrapping="Wrap" />
    </toolkit:DataGridTextColumn.Header>
</toolkit:DataGridTextColumn>
10
ответ дан 27 November 2019 в 17:43
поделиться

Вы можете создать глобальный стиль для заголовков столбцов. Без какой-либо примерной разметки я не знаю синтаксиса, но он должен выглядеть примерно так:

<Style TargetType="{x:Type dg:ColumnHeader}">
    <Setter Property="TextWrapping" Value="Wrap"/>
</Style>

Поскольку стиль не содержит ключей, он будет автоматически применяться ко всем заголовкам столбцов . И стили не будут переопределять какие-либо локально установленные свойства, поэтому они не будут "отключать" какие-либо существующие функции заголовка.

1
ответ дан 27 November 2019 в 17:43
поделиться

Я хочу включить перенос текста во всех заголовках столбцов моего DataGrid, без отключения другого значения по умолчанию функциональность заголовка

Вам необходимо добавить следующее пространство имен в файл app.xaml :

xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"

, а затем добавить этот тег в app.xaml :

<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Text="{Binding}"></TextBlock>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

Это добавит перенос текста к заголовкам всех ваших DataGrids во всем приложении WPF.

Пока мы обсуждаем эту тему, если вы просто хотите центрировать текст каждого из ваших заголовков DataGrid, вы можете сделать это, используя вместо этого следующий стиль:

<Style TargetType="{x:Type primitives:DataGridColumnHeader}">
    <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
</Style>

Тем не менее, я видел так много статей WPF, предлагающих сделать это, только добавив TextWrapping или HorizontalAlignment в каждый столбец DataGrid индивидуально :

<toolkit:DataGridTextColumn Binding="{Binding Path=TaxAmount}">
    <toolkit:DataGridTextColumn.HeaderTemplate >
        <DataTemplate>
            <TextBlock Text="Tax Amount" Width="90" TextWrapping="Wrap" HorizontalAlignment="Center"/>
        </DataTemplate>
    </toolkit:DataGridTextColumn.HeaderTemplate>
</toolkit:DataGridTextColumn>
22
ответ дан 27 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: