亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WPF MVVM DataGrid 內容不適合行高變化

WPF MVVM DataGrid 內容不適合行高變化

C#
qq_花開花謝_0 2022-11-13 15:47:55
我需要使我的行高可變,以便我可以允許某些行添加其他信息。設置RowHeight值似乎沒有任何區別。DataGridTextColumn由于所有內容都已綁定 (MVVM) ,因此在 的級別沒有要設置高度的值。            <Border Grid.Row="1"       Grid.Column="1"                    HorizontalAlignment="Right" Margin="9" Width="auto" Visibility="{Binding LogVisibility}" VerticalAlignment="Stretch">        <DataGrid AutoGenerateColumns="False" VerticalContentAlignment="Center" ItemsSource="{Binding EventLog}" RowHeight="100" Background="White" CellStyle="{StaticResource cellStyle}" ColumnHeaderStyle="{StaticResource headerStyle}" CanUserAddRows="False">            <DataGrid.Columns>                <DataGridTemplateColumn Header="Type" SortMemberPath="CategoryDescription">                    <DataGridTemplateColumn.CellTemplate>                        <DataTemplate>                            <StackPanel Orientation="Horizontal">                                <Image Source="{Binding Image}" MaxHeight="15" MaxWidth="15" VerticalAlignment="Center"/>                                <TextBlock Text=" "/>                                <TextBlock Text="{Binding CategoryDescription}" TextWrapping="Wrap"/>                            </StackPanel>                        </DataTemplate>                    </DataGridTemplateColumn.CellTemplate>                </DataGridTemplateColumn>                <!--<DataGridTextColumn Header="Type" Binding="{Binding CategoryDescription}"></DataGridTextColumn>-->                <DataGridTextColumn Header="Date" Binding="{Binding Date}"/>                <DataGridTextColumn Header="Details" Binding="{Binding TypeDescription}" MaxWidth="400"/>            </DataGrid.Columns>        </DataGrid>    </Border>設置的值RowHeight="{x:Static sys:Double.NaN}"不會改變任何東西,而是看到截斷的文本,如下所示:
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

是的,如果您為 DataGridTextColumn 添加帶有文本塊包裝的自定義樣式,這是可能的


<DataGridTextColumn.ElementStyle>

   <Style>

       <Setter Property="TextBlock.TextWrapping" Value="Wrap" />

   </Style>

</DataGridTextColumn.ElementStyle>

您只需要將 TextWrapping 添加為Wrap或WrapWithOverflow您可以在此處查看差異。另外要使其工作,您需要刪除RowHeight或者您可以將其更改為


RowHeight="100"


MinRowHeight="100"

它確保您的行高至少為 100,并且如果文本不適合 - 該特定行的大小可以變長,但對于原始行高,它不能更改大小并且所有行的高度都固定為 100。順便說一句,100 似乎太高了,可能 20-ish 會很整潔。


試試這段代碼,我還在 Justify 中添加了 TextAlignment 以防你發現它有用。


        <Border Grid.Row="1"

                Grid.Column="1"

                Width="auto"

                Margin="9"

                HorizontalAlignment="Right"

                VerticalAlignment="Stretch"

                Visibility="{Binding LogVisibility}">

            <DataGrid VerticalContentAlignment="Center"

                      AutoGenerateColumns="False"

                      Background="White"

                      CanUserAddRows="False"

                      CellStyle="{StaticResource cellStyle}"

                      ColumnHeaderStyle="{StaticResource headerStyle}"

                      ItemsSource="{Binding EventLog}"

                      MinRowHeight="20">

                <DataGrid.Columns>

                    <DataGridTemplateColumn Header="Type"

                                            SortMemberPath="CategoryDescription">

                        <DataGridTemplateColumn.CellTemplate>

                            <DataTemplate>

                                <StackPanel Orientation="Horizontal">

                                    <Image MaxWidth="15"

                                           MaxHeight="15"

                                           VerticalAlignment="Center"

                                           Source="{Binding Image}" />

                                    <TextBlock Text=" " />

                                    <TextBlock Text="{Binding CategoryDescription}"

                                               TextWrapping="Wrap" />

                                </StackPanel>

                            </DataTemplate>

                        </DataGridTemplateColumn.CellTemplate>

                    </DataGridTemplateColumn>

                    <!--<DataGridTextColumn Header="Type" Binding="{Binding CategoryDescription}"></DataGridTextColumn>-->

                    <DataGridTextColumn Binding="{Binding Date}"

                                        Header="Date" />

                    <DataGridTextColumn MaxWidth="400"

                                        Binding="{Binding TypeDescription}"

                                        Header="Details">

                        <DataGridTextColumn.ElementStyle>

                            <Style>

                                <Setter Property="TextBlock.TextWrapping" Value="Wrap" />

                                <Setter Property="TextBlock.TextAlignment" Value="Justify" />

                            </Style>

                        </DataGridTextColumn.ElementStyle>

                    </DataGridTextColumn>

                </DataGrid.Columns>

            </DataGrid>

        </Border>


查看完整回答
反對 回復 2022-11-13
  • 1 回答
  • 0 關注
  • 333 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號