- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 ItemContainerStyle 的 ListBox。我已经尝试了所有我能想到的方法来让 CheckBox 控件垂直和水平居中。有任何想法吗?
<ListBox
IsSynchronizedWithCurrentItem="True"
Height="Auto" Width="Auto" DockPanel.Dock="Top"
ItemContainerStyle="{StaticResource lbcStyle}" />
<Style TargetType="ListBoxItem" x:Key="lbcStyle">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource editable}"/>
</Trigger>
</Style.Triggers>
<Setter Property="ContentTemplate" Value="{StaticResource nonEditable}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/> '//i have tried stretch here also
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
<Style x:Key="editorCheckBox" TargetType="{x:Type CheckBox}">
<Setter Property="MinWidth" Value="67" />
<Setter Property="Height" Value="25" />
<Setter Property="Margin" Value="5,0,5,0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<DataTemplate x:Key="editable">
<Border x:Name="brdEditable" Width="Auto" HorizontalAlignment="Stretch">
<DockPanel x:Name="dpdEditable" LastChildFill="True" Width="Auto" Height="Auto">
<Grid x:Name="grdEditable" Width="Auto" Height="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="25" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="90" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
'...
<CheckBox x:Name="chkActive" Grid.Column="7" Height="25" Style="{StaticResource editorCheckBox}" ToolTip="Is Construction Active?" IsEnabled="true" Validation.ErrorTemplate="{StaticResource validationTemplate}">
<CheckBox.IsChecked>
<Binding Path="Active">
<Binding.ValidationRules>
<DataErrorValidationRule></DataErrorValidationRule>
<ExceptionValidationRule></ExceptionValidationRule>
</Binding.ValidationRules>
</Binding>
</CheckBox.IsChecked>
</CheckBox>
'...
<ContentControl Name="ExpanderContent" Visibility="Collapsed" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="14"></ContentControl>
</Grid>
</DockPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="nonEditable">
<Border x:Name="brdNonEditable" Width="Auto" HorizontalAlignment="Stretch">
<DockPanel Width="Auto" Height="25">
<Grid Width="Auto" Height="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="25" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="90" />
</Grid.ColumnDefinitions>
<CheckBox x:Name="chkActive" Grid.Column="7" Height="25" Style="{StaticResource editorCheckBox}" ToolTip="Is Construction Active?" IsEnabled="false" Validation.ErrorTemplate="{StaticResource validationTemplate}">
<CheckBox.IsChecked>
<Binding Path="Active">
<Binding.ValidationRules>
<DataErrorValidationRule></DataErrorValidationRule>
<ExceptionValidationRule></ExceptionValidationRule>
</Binding.ValidationRules>
</Binding>
</CheckBox.IsChecked>
</CheckBox>
<Label Content="calCompDate" Style="{StaticResource editorLabelList}" Grid.Column="8" ToolTip="{Binding Path= CompDate}" />
</Grid>
</DockPanel>
</Border>
</DataTemplate>
最佳答案
尝试设置 ScrollViewer.HorizontalScrollBarVisibility
属性(property)到"Disabled"
在列表框上。这会强制项目容器具有固定的宽度;否则,它们可以具有任何水平尺寸,并且无法合理计算水平对齐方式。
根据 Donnelle 的回答,垂直对齐应该是修改 ListBoxItem 样式的问题。
编辑:在您的代码片段中,CheckBox 位于一个 Grid 内,该 Grid 位于一个位于 Border 内的 DockPanel 内。您想准确居中哪个元素?你确定其他人不干涉吗?以下是我的建议和 HorizontalContentAlignment="Center"以及仅数据模板中的复选框的查找方式:
另一个编辑:我复制/粘贴您的网格/停靠面板/边框,与您粘贴的片段中显示的完全相同,结果完全相同 - 项目水平居中。
关于wpf - 如何在 ListBoxItem 中居中 WPF CheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425811/
您好,我找不到任何类似的问题,所以我发布了新问题。在下面的代码中,我使用 ListBoxItems 创建 ListBox 控件,每个 ListBoxItems 都包含内部单选按钮。当我单击单选按钮时,
我将以下数据模板应用于列表框: 当我单击按钮时,命令被触发,但 ListBoxItem 没有被选中。如何强制它被选中,以便我可以在我的“执行
我想在数据绑定(bind)的多个列表框上实现拖放 - 使用 MVVM 模式。我不是试图在列表框之间拖放,而是希望用户能够在每个列表框中拖放列表框项,以便他们可以重新排列排序顺序。我在 SO 上发现这篇
我想实现一种效果,其中 ListBoxItem 被选中(突出显示)几秒钟,然后被取消选中。尝试使用淡入淡出效果实现简单的控件突出显示,但为了使事情正常进行,我需要相应地更改一个属性。 我有一个 IsS
我尝试实现一个 ListBox,其中所选项目比其他项目更详细地显示。 Josh Smith 在 his blog 上展示了一种方法. 为了增强用户体验,我想对变化进行动画处理(即项目变大,附加信息淡入
我只能找到如何通过单击组件 -> Items Editor 来创建 ListBoxItem。 我们如何使用 Firemonkey 以编程方式创建 ListBoxItem? 最佳答案 只需创建列表框项,
是否可以从 Windows Presentation Foundation 的代码隐藏更改选定的 ListBoxItem? 这真的是一个非常简单的任务,我有一个 Next 和 Previous 按钮,
我有一个带样式的列表框,包括带样式的 Listboxitem。我正在尝试创建一个将不透明度从 0 更改为 1 的动画,以使项目显示在列表中。我已设法使用以下代码做到这一点:
我们如何在运行时向 Windows Metro 风格应用程序中的 ListBox 控件添加新项目? 我来自 WinForms,所以你可以想象,我现在很困惑。 我有以下内容: public class
由于某些原因,我必须在后面的代码中初始化 ListBox 项,原因太复杂了。 在 WPF UserControl 显示期间调用 LoadFamily()。 public void LoadFamily
我正在为一个学校项目构建一个聊天室。在聊天室中有一个包含所有消息的列表框。 Messages 是一个包含所有消息的 ObservableCollection。 Message 类有发件人姓名变量。
我想将用户控件 (View) 绑定(bind)到 ListBoxItem。 ListBox 绑定(bind)到 ViewModel 的集合。我已将 ListBox 的 ItemTemplate 设置为
我在设置 HighlightBrushKey 时遇到问题的 SelectedItem的 Listbox在 WPF 中。我的意图是根据代码中给定的 bool 值设置 Item 的颜色。 我试过以下步骤:
实际的视觉效果由 DataTemplate 决定。在运行时,如何遍历 ListBoxItem 的所有可视元素? 最佳答案 假设您引用了 ListBoxItem 之一列表中的 s,您可以使用 Visua
这是我的问题:
我有一个 ListBox 控件;我如何使用下面的代码为每个 ListBoxItem 设置 ToolTip。
我想做这样的事情。
我正在尝试为我的 wpf 应用程序中的业务对象定义一个 dataTemplate,该对象的集合绑定(bind)到 ListBox。
我有一个 ListBox 控件;我如何使用下面的代码为每个 ListBoxItem 设置 ToolTip。
我正在创建一个自定义混合行为来作用于 ListboxItem,即 public class DragtestBehaviour : Behavior { public DragtestBeha
我是一名优秀的程序员,十分优秀!