小编Nil*_*ilu的帖子

在WPF中相对于父级维度定位装饰器

我正在尝试根据装饰元素的父级尺寸来定位装配工.例如,我有一个文本框.我想装饰这个文本框,所以它看起来像这样:

如何安置装饰者http://img707.imageshack.us/img707/9840/fig1.png

文本框放置在画布对象中,如果有足够的可用空间,则将装饰器(半透明的圆角正方形)与文本框的下边缘对齐.当用户点击文本框时,会启动装饰器.

目前,画布及其内容(文本框)以WinForms格式托管 - 因此WPF由ElementHost控件处理.

但是当我运行我的代码时,第一次单击文本框时,它会显示与文本框顶边对齐的装饰器(参见下图).之后它正确定位(如上图所示)有谁知道为什么会这样?

如何装饰是位置http://img14.imageshack.us/img14/4766/fig2v.png

我已粘贴下面的代码:

TextBoxAdorner.cs - 这是装配逻辑

public class TextBoxAdorner : Adorner
{
    private TextBox _adornedElement;
    private VisualCollection _visualChildren;
    private Rectangle _shape;
    private Canvas _container;
    private Canvas _parentCanvas;

    public TextBoxAdorner(UIElement adornedElement, Canvas parentCanvas)
        : base(adornedElement)
    {
        _adornedElement = (TextBox)adornedElement;
        _parentCanvas = parentCanvas;
        _visualChildren = new VisualCollection(this);

        _container = new Canvas();

        _shape = new Rectangle();
        _shape.Width = 100;
        _shape.Height = 80;
        _shape.Fill = Brushes.Blue;
        _shape.Opacity = 0.5;

        _container.Children.Add(_shape);

        _visualChildren.Add(_container);
    }

    protected override Size ArrangeOverride(Size finalSize)
    { …
Run Code Online (Sandbox Code Playgroud)

wpf adorner wpf-positioning

6
推荐指数
1
解决办法
6034
查看次数

检查 WPF 中的重叠形状

我有一组需要在彼此之上绘制的形状。我需要对它们重新排序,以便最后绘制最小的形状(即它将最接近用户)。有什么方法可以检查一个形状是否与另一个形状重叠(包围和/或相交)。Rect我知道结构中有一个称为的方法Contains,它检查其中是否有对象。是否有类似的方法或方法可以在 WPF 中的 Shapes 上模拟它?预先感谢您的任何帮助。

干杯,

尼禄

wpf layout shapes

3
推荐指数
1
解决办法
2909
查看次数

访问WPF中DataTemplate内的项目

我想知道在WPF中你是否能够获得datatemplate对象的实际实例.例如,在以下情况中:

<UserControl>
    <UserControl.Resources>
        <DataTemplate x:Key="MyTemplate">
            <CustomControl ></CustomControl>
        </DataTemplate>
    </UserControl.Resources>

    <ListBox DataTemplate="{StaticResource MyTemplate}"></ListBox>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

假设CustomControl有一个CustomEvent和一个公众CustomMethod.我想在用户控件中访问该事件和公共方法.这可能吗?我怎么能这样做?在此先感谢您的帮助.

干杯,

尼鲁

wpf datatemplate

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

wpf ×3

adorner ×1

datatemplate ×1

layout ×1

shapes ×1

wpf-positioning ×1