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我自己的面板,这是我最终决定要做的,所以我会将你的答案标记为已接受。遗憾的是,我无法找到一个更简单的解决方案,构建自定义面板相当复杂。