- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不想剪切文本 block 的文本。为此,我将 viewBox.ClipToBounds 设置为 false,但它不起作用。
请告诉我为什么 ClipToBounds=false 在这段代码中不起作用:
private void Btn1_Click(object sender, RoutedEventArgs e)
{
Button button = new Button(); button.Background = Brushes.Red;
button.Width = 70; button.Height = 20;
Canvas.SetLeft(button, 100); Canvas.SetTop(button, 120);
button.Padding = new Thickness(1);
StackPanel stackPanel = new StackPanel();
Viewbox viewBox = new Viewbox();
viewBox.ClipToBounds = false;
Canvas canvas = new Canvas();
canvas.Width = button.Width; canvas.Height = button.Height;
TextBlock textBlock = new TextBlock();
textBlock.Text = "this is a test";
textBlock.FontSize = 15;
textBlock.FontFamily = new FontFamily("Arial");
textBlock.TextWrapping = TextWrapping.NoWrap;
textBlock.Foreground = Brushes.Green;
textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
textBlock.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
viewBox.Height = 20;
textBlock.IsHitTestVisible = false;
stackPanel.Children.Add(viewBox);
viewBox.Child = canvas;
canvas.Children.Add(textBlock);
button.Content = stackPanel;
Canvas MainCanvas = new Canvas();
MainCanvas.Children.Add(button);
this.Content = MainCanvas;
}
截图:
下面的截图就是我想要的。 :
最佳答案
ClipToBounds
默认为 false
。但是,由于某些元素执行布局的方式,裁剪仍然可能发生。基本上 WPF 中的工作方式是设置 ClipToBounds = true
将强制剪辑。将其设置为 false
意味着 WPF 根据测量约束和排列矩形确定事物应如何裁剪。
如果您查看 FrameworkElement
中的 ArrangeCore
和 MeasureCore
方法,你会看到有相当多的逻辑来决定是否应该裁剪某些东西。当然,重写 FrameworkElement
的东西可以根据需要自由呈现,但通常它们会遵守基类建立的裁剪规则。
在 TextBlock
的情况下,如果其大小受到限制,它肯定会剪切超出其范围的文本。您可以通过简单地在其上设置 Width
或将其放置在其上设置了 Width
的父级来看到这一点。
如果您确实需要在控件边界之外呈现文本,您可能必须考虑编写自定义文本呈现元素之类的方法。 即便如此,只要您将它放置在其他可以剪裁的东西中,它仍然会被其父级剪裁。所以,您仍然可能会卡住。
您可以尝试将 TextBlock
放在按钮的顶部而不是按钮内部,并设置它的位置以使其位于正确的位置(可能通过将它绑定(bind)到某个东西)。这会奏效,但如果您需要执行太多操作,可能会难以管理。
基本上,您正试图违反 WPF 的硬编码规则之一,因此您可能找不到一种简单的方法来做到这一点。也许您可能想要重新评估您的设计并确定此行为是否真的是您想要做的事情所必需的,或者您是否可以采用不同的方式来实现它。
关于c# - 为什么 ClipToBounds = false 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964863/
我正在开发 Silverlight 应用程序,我的问题是这样的:我有一个 WrapPanel和内部 WrapPanel我正在添加一些图像。然后,我旋转这些图像 90 度或 -90 度。 因此,如果我的
我正在 map 上绘制线条,我注意到我的注释 View 没有覆盖线条的整个区域(这很好,只要我可以在 View 边界之外绘制)。 这是我正在经历的事情的图片。对于注释 View ,clipToBoun
我有一个非常简单的 UIScrollView,其中包含一些内容(许多 subview )。此 ScrollView 用于显示用户发布的一些帖子(图片+文本)。其中一个 View 实际上是作者的图像,它
我有一个自定义类,它为我的按钮添加了边框,并具有在左上角创建“X”按钮的功能。 第一个问题:为了使 X 按钮出现在图像按钮的边界之外,我必须关闭图像按钮上的 clipToBounds。但这具有让图像穿
我有一个默认隐藏多个标签的自定义单元格(用户在单击该单元格时会看到所有内容)。我正在更改单元格的高度和 cell.clipToBounds = true 以隐藏标签。但这不适用于可编辑的单元格。当我开
我有一个应用程序,它在 WPF 中的 Image 对象内显示图像。该图像包含在其 xaml 如下所示的控件中: 其中两个控件包含在窗口的网格中,如下所示:
我正在尝试查找 ClipToBounds 的等效项在 Windows 运行时中。如果它不存在,是否有办法重新创建此行为? 最佳答案 这是我使用的解决方案: public class Clip {
我有一个“ mask Canvas ”,我正在使用它作为我主要绘画 Canvas 的 OpacityMask 的来源。 我的两个 Canvas 大小相同,但当我开始在 Canvas 边界附近绘画时,我
我有一个 ImageView ,它开始使用 clipsToBounds 裁剪图像并将内容模式设置为“比例纵横比填充”,我希望它将图像“放大”到整个图像。如果 clipsToBounds=NO 是一个动
给定一个非常基本的 Grid,ColumnDefinition 的宽度设置为 *,其中包含的按钮的硬编码宽度属性将被忽略并且这些子元素被剪裁。它们不会被设置为 Auto 的宽度裁剪。 如果在每个 Co
我需要将 UIView 覆盖在 UIPageViewController 上,并希望它能让我关闭 clipsToBounds,然后将交互式边界区域的大小调整为较小的高度,并将另一个 View 放在非交
我不想剪切文本 block 的文本。为此,我将 viewBox.ClipToBounds 设置为 false,但它不起作用。 请告诉我为什么 ClipToBounds=false 在这段代码中不起作用
我试图在高度受限的网格中心放置一个矩形,如下所示: 我希望它看起来像这样: 但它看起来像这样: 我知道我的子矩形更大,它的剪辑是可以理解的,但是,我的 Cli
我有一门课需要 NSString作为参数,使用 Core Text 获取文本的大小,提取每一行并以不同的 x 偏移量渲染文本行,以产生倾斜的效果。 当 Core Graphics 绘制文本行时,我也会
我有一个宽度/高度为 256x256 的 ScrollView 。我有那个 ScrollView 的 subview 在两个方向(左和右)延伸。我将 clipToBounds 设置为 NO,这样我就可
我有 UIScrollView 和其中包含 UIImageView 的对象数量(UIView 组合)。一些 UIImageViews 有圆形边框(为此我使用 myImageView.layer.mas
UITableView放在 UINavigationController将有一个类型为 UINavigationTransitionView 的父 View , 及其 clipToBounds是 tr
我需要在 WPF 中显示工具栏边界外的一些子项(光标悬停时工具栏上的按钮会变大)。 Image 1: Right panel behavior: ClipToBounds="False" 当 Clip
我有两个 UIView。我用一个来容纳另一个,这样我就可以将一个滑入另一个。我遇到了一个问题,即使 subview 被裁剪到其父 View 的边界,它仍然接收触摸事件并阻止访问其他底层 View 。
iOS 7 的重新设计导致 UITableViewCells 的 View 层次结构发生变化。单元格的内容 View 包装在一个名为 UITableViewCellScrollView 的私有(pri
我是一名优秀的程序员,十分优秀!