C# 始终保持列宽';在WPF中是相等的
我当前有一个WPF应用程序,它包含一个C# 始终保持列宽';在WPF中是相等的,c#,wpf,C#,Wpf,我当前有一个WPF应用程序,它包含一个列表框,其中包含网格项 这些网格各有2列,第一列包含文本,第二列包含椭圆 我的问题是,我目前将两个列定义设置为宽度.5*,因此它们各自占总宽度的50%。但是,当文本太长或者它将第二列中的椭圆与列表中的其余椭圆(从上到下垂直查看)推离直线时,此操作不起作用 基本上这就是我得到的: 我希望发生的是,无论第一列中的文本有多长,所有省略号都要对齐 我曾尝试将第一列的文本放置在视图框中,以自动调整其大小,但这似乎也不起作用 以下是数据模板的完整XAML: <G
列表框
,其中包含网格
项
这些网格各有2列,第一列包含文本,第二列包含椭圆
我的问题是,我目前将两个列定义设置为宽度.5*
,因此它们各自占总宽度的50%。但是,当文本太长或者它将第二列中的椭圆与列表中的其余椭圆(从上到下垂直查看)推离直线时,此操作不起作用
基本上这就是我得到的:
我希望发生的是,无论第一列中的文本有多长,所有省略号都要对齐
我曾尝试将第一列的文本放置在视图框中,以自动调整其大小,但这似乎也不起作用
以下是数据模板
的完整XAML:
<Grid x:Name="MainTermServListGrid">
<Grid.RowDefinitions>
<RowDefinition x:Name="MainTermServMainRow"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding TServer}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Grid x:Name="OldPathGrid" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".5*"/>
<ColumnDefinition Width=".5*"/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Column="0" Stretch="Uniform">
<TextBlock Grid.Column="0">
<Run Text="Path: "/>
<Run Text="{Binding OldPath}"/>
</TextBlock>
</Viewbox>
<Ellipse Grid.Column="1" HorizontalAlignment="Center" Width="{Binding ElementName=MainTermServListGrid, Path=ActualHeight}" Fill="{Binding IsOldPathValid, Converter={StaticResource ValPthToBgClr}}"/>
</Grid>
<Grid x:Name="NewPathGrid" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".5*"/>
<ColumnDefinition Width=".5*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0">
<Run Text="Path: "/>
<Run Text="{Binding NewPath}"/>
</TextBlock>
<Ellipse Grid.Column="1" Width="{Binding ElementName=MainTermServListGrid, Path=ActualHeight}" Fill="{Binding IsNewPathValid, Converter={StaticResource ValPthToBgClr}}"/>
</Grid>
</Grid>
您应该看看SharedSizeGroup
基本上:
<ItemsControl ItemsSource="{Binding SomeItems}"
Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="ColA" Width=".5*" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsControl.ItemTemplate>
</ItemsControl>
使用SharedSizeScope
和SharedSizeGroup
,可以确保同一包含范围内不同网格中的列/行大小相同
注意:它不必是ItemsControl
任何使用附加属性Grid的容器。IsSharedSizeScope
将确保其中包含的网格会引起注意
你能粘贴列表框的数据模板吗?把它添加到我的主要帖子@kanchirkThe,5它完全是多余的。如果您将列宽设置为“*”,则我在下面回答的2列中的每一列的列宽将分成50%@user2357446,如果答案有助于解决您的问题,请您将其标记为已接受好吗?谢谢