c# - ContentPresenter - 水平对齐不起作用
问题描述
label: control
我为表单的简化使用创建了一个自定义控件:
我的问题是,无论将什么放入我的控件内容中,我都无法使用我的模板代码对齐它。它起作用的唯一方法是当我直接HorizontalAlignment="Right"
放入TextBox
控件时:
<local:ControlEntry Label="Enter something">
<!-- I don't like having HorizontalAlignment here! -->
<TextBox Height="20" Width="200" HorizontalAlignment="Right" />
</local:ControlEntry>
但是,我宁愿在我的控件模板中在幕后执行此操作。
我说的是这个特定的 XAML 代码:
<Border x:Name="Container"
HorizontalAlignment="Stretch"
Grid.Column="1">
<ContentPresenter Width="{Binding ActualWidth, ElementName=Container}" HorizontalAlignment="Right" />
</Border>
首先,我拉伸HorizontalAlignment
,所以它将填充网格列单元格的宽度,然后我尝试Right
HorizontalAlignment
在ContentPresenter
. 不幸的是,看不到任何效果。
完整的控制代码:
<Style TargetType="{x:Type local:ControlLine}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ControlLine}">
<!-- Create bottom content border -->
<Border BorderBrush="#000" BorderThickness="0,0,0,0.5">
<StackPanel>
<Grid>
<!-- Label -> Control -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- Label -->
<TextBlock Grid.Column="0"
Margin="0,12,15,12"
VerticalAlignment="Center"
Text="{Binding Label, RelativeSource={RelativeSource TemplatedParent}}"
TextWrapping="WrapWithOverflow" />
<!-- Display content -->
<Border x:Name="Container"
HorizontalAlignment="Stretch"
Grid.Column="1">
<ContentPresenter Width="{Binding ActualWidth, ElementName=Container}" HorizontalAlignment="Right" />
</Border>
</Grid>
<!-- Description -->
<TextBlock Text="The control description" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如何正确保持宽度拉伸并同时将内容ContentPresenter
向右对齐?
解决方案
推荐阅读
- git - 在 Windows 10 上安装 Git 时出现安装错误
- javascript - 如何检查用户是否在 pwa 或浏览器中
- javascript - React 组件卸载的窗口对象事件
- html - 我的 html img src 属性代码有什么问题?
- python - 我可以在不迭代的情况下使用 pandas agg 来做到这一点吗?
- python - 如何通过一键在Python中按多键字典分组?
- php - PHP忽略if语句(行数)
- python - 使用 Databricks 中的 dbutils.fs.ls 输出创建数据框
- docker - 带有多个参数的 Docker 运行 --entrypoint
- python - pandas.read_csv 中的阅读方向