C# 水平居中水平项控件

C# 水平居中水平项控件,c#,wpf,xaml,layout,C#,Wpf,Xaml,Layout,如何创建水平方向的项目控件,其中项目的对齐方式与此网格中这两个标签的对齐方式相同 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefin

如何创建水平方向的
项目控件
,其中项目的对齐方式与此
网格中这两个标签的对齐方式相同

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Label Grid.Column="1">Text 1</Label>
    <Label Grid.Column="3">Text 2</Label>
</Grid>

文本1
文本2
我已经有了项目的视图,因此使用
ItemsTemplate
可能不是一个选项

资源 这里有一些关于创建自定义面板的教程和文章。希望这将帮助有类似问题的人






如果不编写自己的面板,您可以得到的最接近的面板是:

<ItemsControl ItemsSource="{Binding TheItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Control.HorizontalAlignment" Value="Center"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>


请注意,目前我的.NET版本较少,因此无法测试上述内容。

如果不编写自己的面板,您可以得到的最接近的版本是:

<ItemsControl ItemsSource="{Binding TheItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Control.HorizontalAlignment" Value="Center"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>


请注意,目前我的.NET版本较少,因此无法测试上述内容。

这无法满足我的需要:-(就像在中央的
列中定义
应该是
Width=“2*”
。是否有可能通过内部使用
网格来创建面板,而不是实际计算单个元素的位置?我已经研究了
StackPanel
的一个实现,它看起来非常复杂,因此任何好的解决方法都会非常有用。您是对的,其中一个解决方案是编写m我自己的面板,这是我最终决定要做的,因此我会将您的答案标记为已接受。遗憾的是,我无法找到更简单的解决方案,构建自定义面板相当复杂。这无法满足我的需要。:-(就像在中央
列定义中
Width=“2*”
。是否有可能通过内部使用
网格来创建面板,而不是实际计算单个元素的位置?我已经研究了
StackPanel
的一个实现,它看起来非常复杂,因此任何好的解决方法都会非常有用。您是对的,其中一个解决方案是编写m我自己的面板,这是我最终决定要做的,所以我会将你的答案标记为已接受。遗憾的是,我无法找到一个更简单的解决方案,构建自定义面板相当复杂。