标签: actualheight

为什么在这种情况下ActualWidth和ActualHeight为0.0?

我有一个Grid内部Canvas定义如下:

<Canvas x:Name="outerCanvas">
    <Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition  />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
        <Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
        <Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
        <Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
    </Grid>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在窗口的构造,后InitializeComponents()两种Grid.ColumnDefinitions[0].ActualWidth或"任何矩形".ActualWidth都被设置为0.0(高度相同).我不知道如何获取这些信息.有帮助吗?

观察:

  1. 我没有定义外部画布的宽度和高度,但如果我这样做,它并不能解决我的问题.
  2. 在运行时我可以看到它Canvas/Grid占据整个窗口空间,因此其中的每个矩形都有ActualWidth …

wpf grid xaml actualwidth actualheight

43
推荐指数
2
解决办法
6万
查看次数

如何使用ReactCSSTransitionGroup在React中为元素高度设置动画?

我正在尝试用元素高度设置动画ReactCSSTransitionGroup,所以这就是我想要的动画效果:

http://jsfiddle.net/cherrry/hgk4Lme9/

问题是,我总是不知道该元素的高度,所以我试图破解scrollHeight,clientHeight期间或类似的东西componentDidMount,并尝试设置node.style.height或规则添加到样式表

http://jsfiddle.net/cherrry/dz8uod7u/

让动画看起来很好,但是当元素进入时,它会闪现一点,缩放动画看起来很奇怪

应该是因为询问node.scrollHeight导致渲染立即发生,所以无论如何都要获得相同的信息并在动画开始之前注入css规则?或者我应该考虑其他方式?

我对max-height解决方案不是很满意,因为当max-height不接近或小于时,结果动画速度将非常奇怪height,并且我的组件的高度确实变化很大.

我可以想象最终的解决方案可能有点混乱,但我认为将它变成一个Mixin将足以在任何地方重复使用它

reactjs actualheight reactcsstransitiongroup

20
推荐指数
2
解决办法
2万
查看次数

ScrollViewer的视口高度VS实际高度

两者都是相当笼统的术语,但我很想知道这些高度何时会与我们使用虚拟化的情况不同?

还有一个问题:我在MSDN上阅读:

如果CanContentScroll为true,则ExtentHeight,ScrollableHeight,ViewportHeight和VerticalOffset属性的值是项目数.如果CanContentScroll为false,则这些属性的值为"设备无关像素".

但是我遇到了ViewPort Height的问题:我在应用程序中有2个列表框:
1.启用了虚拟化并且CanContentScroll = True.
2.哪些没有虚拟化,CanContentScroll = True.

在ListBox 1中,拖放视口高度达到4/5(当前可见的元素数).但是在ListBox 2中,我得到的视口高度等于列表框的实际高度.

为何如此区别?

更多的发现:
1.可滚动高度是滚动查看器2中不可见的项目数
.视口高度是滚动查看器中可见的项目数.
因此,视口高度+ ScrollableHeight =范围高度

有人可以解释两个列表框之间有什么区别吗?在Listbox 1的情况下我需要ViewPort hieght

wpf virtualization listbox scrollviewer actualheight

9
推荐指数
2
解决办法
2万
查看次数

如何强制ActualWidth和ActualHeight更新(silverlight)

我在silverlight控件上有一个网格,我以编程方式添加了一个画布,在画布中我正在加载并显示Image.

我还在画布上添加一个旋转.问题是默认情况下,旋转的CenterX和CenterY是画布的左上角.我想要的是围绕画布中心的旋转.

为此,我尝试将旋转的CenterX和CenterY设置为Images ActualWidth/ 2和ActualHeight/ 2,但是我发现ActualWidth并且ActualHeight并不总是填充,至少不会立即填充.我如何强迫他们更新?

即使在图像上使用DownloadProgress事件似乎也不能保证填充ActualWidth和ActualHeight,也没有使用this.Dispatcher.BeginInvoke()...

Image imgTest = new Image();
Canvas cnvTest = new Canvas();
Uri uriImage = new Uri("myurl", UriKind.RelativeOrAbsolute);
System.Windows.Media.Imaging.BitmapImage bmpDisplay = new System.Windows.Media.Imaging.BitmapImage(uriImage);

bmpDisplay.DownloadProgress += new EventHandler<System.Windows.Media.Imaging.DownloadProgressEventArgs>(this.GetActualDimensionsAfterDownload);

imgTest.Source = bmpDisplay;
imgTest.Stretch = Stretch.Uniform;
imgTest.HorizontalAlignment = HorizontalAlignment.Center;
imgTest.VerticalAlignment = VerticalAlignment.Center;

cnvTest.Children.Add(imgTest);

this.grdLayout.Children.Add(imgTest);
this.Dispatcher.BeginInvoke(new Action(GetActualDimensions)); 
Run Code Online (Sandbox Code Playgroud)

silverlight actualwidth actualheight

9
推荐指数
1
解决办法
7643
查看次数

为什么ActualWidth和ActualHeight从0,0开始?

我想添加WPF路径InkCanvas并使用选择来选择WPF路径.所以,我使用这段代码.

System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;    
drawCanvas.Children.RemoveAt(i);
inkCanvas.Children.Add(path);
Run Code Online (Sandbox Code Playgroud)

这是输出.我必须从0,0中选择WPF Path,因为ActualwidthActualHeight从0,0开始.

替代文字

如何选择绝对WPF路径?

谢谢

编辑:

现在,我可以使用此代码绝对选择它.

System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
path.Margin = new Thickness(-getMinX(path), -getMinY(path), 0, 0);
containPath.Children.Add(path);
containPath.Width = getMaxX(path) - getMinX(path);
containPath.Height = getMaxY(path) - getMinY(path);
containPath.Margin = new Thickness(getMinX(path), getMinY(path), 0, 0);
inkCanvas.Children.Add(containPath);
Run Code Online (Sandbox Code Playgroud)

wpf selection inkcanvas actualwidth actualheight

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

绑定到Item ItemsControl的ActualHeight

我有两个独立的ItemsControls并排出现.在ItemsControl小号绑定到相同的ItemsSource,但他们不同的方式显示数据.

左侧显示的每个项目很可能小于右侧的相同项目.这会导致问题,因为行不会排成一行,因此我需要左侧的项目绑定到右侧的项目.

ItemsControl        ItemsControl
|Item 1         |Item 1
|Item 2         |Item 2
|Item 3         |
|Item 4         |Item 3
Run Code Online (Sandbox Code Playgroud)

如您所见,右侧的第2项更大,因此它会抛弃对齐.因此,如果我可以将左侧的项目2绑定到右侧的项目2,ActualHeight则问题将得到解决.我怎样才能在XAML中做到这一点?

编辑:为了使事情变得更复杂,ItemsControl右边需要从右向左滚动,但两者都ItemsControls需要一起向上和向下滚动.基本上,左边的一个为右边的项目提供了各种标题.

wpf xaml binding itemscontrol actualheight

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

WPF控件是否可以具有ActualWidth和ActualHeight(如果它从未被渲染过)?

我需要一个Viewport3D用于进行几何计算的唯一目的Petzold.Media3D.ViewportInfo.我宁愿不把它放在一个Window或以其他方式呈现它.

我试图通过Viewport3D使用以下C#方法实例化并设置一些属性来实现此目的:

private Viewport3D CreateViewport(MainSettings settings)
{
    var cameraPosition = new Point3D(0, 0, settings.CameraHeight);
    var cameraLookDirection = new Vector3D(0, 0, -1);
    var cameraUpDirection = new Vector3D(0, 1, 0);
    var camera = new PerspectiveCamera
    {
        Position = cameraPosition,
        LookDirection = cameraLookDirection,
        UpDirection = cameraUpDirection
    };
    var viewport = new Viewport3D
    {
        Camera = camera,
        Width = settings.ViewportWidth,
        Height = settings.ViewportHeight
    };
    return viewport;
}
Run Code Online (Sandbox Code Playgroud)

稍后,我正在尝试使用此视口使用此方法将鼠标位置转换为3D位置:

public Point3D? Point2dToPoint3d(Point point)
{
    var range = …
Run Code Online (Sandbox Code Playgroud)

3d wpf wpf-controls actualwidth actualheight

5
推荐指数
1
解决办法
1342
查看次数

对象的ActualHeight和ActualWidth始终为零

我有Canvas一个TextBlock像这样:

<Canvas x:Name="ContentPanel" Grid.Row="1" DoubleTapped="ContentPanel_DoubleTapped">
        <TextBlock x:Name="WordBlock" FontSize="226.667" FontFamily="Segoe UI Semilight" TextAlignment="Center"
                   RenderTransformOrigin="0.5, 0.5">
            <TextBlock.RenderTransform>
                <TranslateTransform x:Name="translate"/>
            </TextBlock.RenderTransform>
        </TextBlock>
    </Canvas>
Run Code Online (Sandbox Code Playgroud)

我的应用程序是这样的,当用户导航到此页面时,TextBlock将以中心为中心Canvas,如果TextBlock宽度大于画布的宽度,则会出现选框动画:

private void SetAnimation()
{
    Canvas.SetLeft(WordBlock, (ContentPanel.ActualWidth - WordBlock.ActualWidth) / 2);
    Canvas.SetTop(WordBlock, (ContentPanel.ActualHeight - WordBlock.ActualHeight) / 2);

    if (WordBlock.ActualWidth > ContentPanel.ActualWidth)
    {
        MarqueeAnimation.From = WordBlock.ActualWidth;
        MarqueeAnimation.To = -WordBlock.ActualWidth;
        MarqueeAnimation.Duration = new Duration(new TimeSpan(0, 0, 10));
        MarqueeBoard.Begin();
    }
}
Run Code Online (Sandbox Code Playgroud)

此方法称为OnNavigatedTo.我无法弄清楚为什么TextBlock不会居中,因为ActualHeightActualWidth属性总是以0.0的形式返回.我不想放置固定大小,因为这是一个Windows应用商店应用程序,并希望它可以在不同的屏幕尺寸上进行扩展.

有任何想法吗?我被卡住了.

c# xaml windows-runtime actualwidth actualheight

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

ActualHeight/ActualWidth

我对如何计算ActualWidthActualHeight工作或如何计算感到困惑.

<Ellipse Height="30" Width="30" Name="rightHand" Visibility="Collapsed">
    <Ellipse.Fill>
        <ImageBrush ImageSource="Images/Hand.png" />
    </Ellipse.Fill>
</Ellipse>
Run Code Online (Sandbox Code Playgroud)

当我使用上面的代码时,我得到30 ActualWidthActualHeight.但是当我以编程方式定义一个椭圆时,即使我定义了(最大)高度和(最大)宽度属性,ActualWidth并且ActualHeight为0,我不明白它是如何为0的?

c# wpf actualwidth actualheight

2
推荐指数
1
解决办法
1520
查看次数

绑定到ActualHeight不起作用

我试图创建一个自定义控件,具有半透明的圆形背景:

<Canvas>
    <TextBlock x:Name="StopText" Text="Some test text"/>
    <Rectangle Fill="SkyBlue"
               Width="{Binding Source=StopText, Path=ActualHeight}" 
               Height="20"  
               RadiusX="5" RadiusY="5" Opacity="0.2"/>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

问题是我不能绑定到ActualHeight/ ActualWidthproperties,因为它们不是依赖项.

如何处理相同大小的矩形和文本框?

wpf binding actualwidth actualheight

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

silverlight NaN的高度和宽度,ActualHeight和ActualWidth也返回0.0 - 解决方法是什么?

popUpControllistBoxControl下面正在返回NaN作为高度和宽度.这ActualHeight也是0.0

为什么?更重要的是,解决方法是什么?

<Popup Name="popUpControl" IsOpen="True" VerticalAlignment="Top" HorizontalAlignment="Left" >
    <ListBox Name="listBoxControl" SelectionChanged="_ListBox_SelectionChanged"
            Style="{StaticResource ListBoxStyle}" BorderBrush="Transparent"
             MaxHeight="300" MaxWidth="350" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Text="{Binding ID}" VerticalAlignment="Center" Margin="2,0,0,0" />
                    <TextBlock Text="{Binding Name}" VerticalAlignment="Center" Margin="2,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Popup>
Run Code Online (Sandbox Code Playgroud)

silverlight wpf xaml actualwidth actualheight

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