Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 始终保持列宽';在WPF中是相等的_C#_Wpf - Fatal编程技术网

C# 始终保持列宽';在WPF中是相等的

C# 始终保持列宽';在WPF中是相等的,c#,wpf,C#,Wpf,我当前有一个WPF应用程序,它包含一个列表框,其中包含网格项 这些网格各有2列,第一列包含文本,第二列包含椭圆 我的问题是,我目前将两个列定义设置为宽度.5*,因此它们各自占总宽度的50%。但是,当文本太长或者它将第二列中的椭圆与列表中的其余椭圆(从上到下垂直查看)推离直线时,此操作不起作用 基本上这就是我得到的: 我希望发生的是,无论第一列中的文本有多长,所有省略号都要对齐 我曾尝试将第一列的文本放置在视图框中,以自动调整其大小,但这似乎也不起作用 以下是数据模板的完整XAML: <G

我当前有一个WPF应用程序,它包含一个
列表框
,其中包含
网格

这些网格各有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,如果答案有助于解决您的问题,请您将其标记为已接受好吗?谢谢