WPF后台代码实现同一行元素左右对齐问题求助
WPF后台代码实现文本左对齐+ToggleSwitch右对齐的Border卡片
用Grid布局完全能实现你要的效果,问题大概率出在列定义或者控件对齐属性没设置对。直接给你能跑的后台代码示例:
// 创建外层Border卡片 var border = new Border { BorderThickness = new Thickness(1), BorderBrush = Brushes.LightGray, CornerRadius = new CornerRadius(4), Padding = new Thickness(12), Margin = new Thickness(8) }; // 创建Grid容器,设置两列 var grid = new Grid(); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); // 第一列自适应文本宽度 grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // 第二列占满剩余空间 // 左对齐的文本控件 var textBlock = new TextBlock { Text = "示例文本", FontSize = 14, VerticalAlignment = VerticalAlignment.Center }; Grid.SetColumn(textBlock, 0); grid.Children.Add(textBlock); // 右对齐的ToggleSwitch var toggleSwitch = new ToggleSwitch { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center }; Grid.SetColumn(toggleSwitch, 1); grid.Children.Add(toggleSwitch); // 将Grid放入Border border.Child = grid; // 最后把Border添加到你的容器里(比如Window的Content或者某个Panel) this.Content = border;
关键注意点:
- 第一列设为
Auto,保证文本不会被截断,同时不占用多余空间 - 第二列设为
Star,占满Border内剩余的所有宽度 - ToggleSwitch必须设置
HorizontalAlignment = HorizontalAlignment.Right,这样才会贴在第二列的右侧
如果你之前用Grid没成功,大概率是没给第二列设Star宽度,或者没给ToggleSwitch设置右对齐属性。
内容的提问来源于stack exchange,提问作者Juan David Cabezuelo
相关产品推荐
相关产品推荐

