Как изменить размер шрифта в ячейке datagrid, чтобы он соответствовал ячейке?
В этом примере у меня есть простая таблица данных с заголовками, 3 столбцами и 2 строками данных. Привязан к datatable 1 (dt1).
То, что я хочу сделать, - это настроить размер шрифта каждой ячейки, чтобы заполнить ширину ячейки.
Нет переноса слов или использования viewbox, так как они не подходят для общего применения.
Я использовал viewbox в последнем столбце, чтобы продемонстрировать поведение viewbox, которое я хочу избежать. Это уменьшает площадь текстового поля в ячейке, что означает, что вы должны нажать именно на текст, чтобы отредактировать ячейку.
Поведение, которое я ищу, состоит в том, чтобы настроить размер шрифта (не имеет значения, насколько он мал, поскольку в окончательной реализации пользователь может настроить ширину столбца и таким образом увеличить шрифт до читаемого размера), чтобы соответствовать ширине ячейки на одной строке.
Размер шрифта просто должен соответствовать ширине ячейки, чтобы поместиться в ячейку, независимо от того, насколько маленьким может стать шрифт.
Спасибо, Тони.
<Window x:Class="ExamlpeForForum.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ExamlpeForForum" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <DataGrid x:Name="dataGrid1" Grid.Column="2" Grid.ColumnSpan="6" Grid.Row="2" Grid.RowSpan="6" AutoGenerateColumns="False" CanUserAddRows="False" CanUserResizeColumns="True" CanUserDeleteRows="False" ScrollViewer.CanContentScroll="False" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Hidden" FontSize="12" RowHeaderWidth="0" > <DataGrid.Columns > <DataGridTemplateColumn Header="Column0" Width="50*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBox Text="{Binding Column0}" TextWrapping="Wrap" FontSize="12"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Column1" Width="50*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBox Text="{Binding Column1}" TextWrapping="Wrap" FontSize="12"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Column2" Width="50*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Viewbox Stretch="Fill" StretchDirection="DownOnly"> <TextBox Text="{Binding Column2}" TextWrapping="Wrap" FontSize="12" /> </Viewbox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid> </Window>
using System.Windows; using System.Data; namespace ExamlpeForForum { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { DataTable dt1 = new DataTable(); public MainWindow() { InitializeComponent(); //Build Data table1 Columns dt1.Columns.Add("Column0"); dt1.Columns.Add("Column1"); dt1.Columns.Add("Column2"); //Populate Data Table1 dt1.Rows.Add(); dt1.Rows[0][0] = "1"; dt1.Rows[0][1] = "2"; dt1.Rows[0][2] = "3"; dt1.Rows.Add(); dt1.Rows[1][0] = "4"; dt1.Rows[1][1] = "5"; dt1.Rows[1][2] = "6"; dataGrid1.ItemsSource = dt1.DefaultView; } } }
Что я уже пробовал:
Я пытался измерить ячейку и настроить шрифт , но у меня не было успеха.
Gerry Schmitz
Там нет автоматической "функции изменения размера шрифта" ... "окно просмотра" (на ячейку) - это именно то, что вам нужно, как вы его описываете. И все " 10*" являются избыточными; использование только "*" в этом случае выполняет то же самое.
Member 12540636
Спасибо за ваш ответ, Джерри. И да, я заменил 10* на просто *.
Я также обновил вопрос, чтобы более полно объяснить, чего я пытаюсь достичь, поле просмотра очень близко к тому, что мне нужно, но уменьшает размер текстового поля и при этом уменьшает область для нажатия. Я дал column3 окно просмотра, чтобы продемонстрировать, чего я пытаюсь избежать.