【发布时间】:2018-04-25 19:05:20
【问题描述】:
我已经在 C# 中使用应用程序开发人员工作了大约一年 - 我已经从 C++-CLI winForm 切换到 C# winForm,现在切换到 C#/XML WPF。我正在创建一个模板来测试我对 UI/UX 效果(动画)的了解。本质上发生的情况是,当用户选择“开始”按钮时,表单的右半部分(白色)的宽度从 390 扩展到 600,导致左半部分(橙色)缩小并显示新信息。
一切都很好,但是最近我发现网格元素在使用边距值时有时会出现异常。下面显示了 TextBlock [...] Margin="0, 97" 与 TextBlock [...] Margin="210,97" 之间的区别。我希望 TextBlock 位于椭圆的右侧,尽管它不可见。
<Grid x:Name="RightContent2" Opacity="1" Width="390" Height="410" Background="White">
<TextBlock x:Name="author2" Foreground="LightGray" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="210, 97" FontSize="8" Text="By Luke Isitt" Cursor="Hand"/>
<Ellipse Height=" 25" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="170, 90" Cursor="Hand">
<Ellipse.Fill>
<ImageBrush ImageSource="./resources/images/Drake-smiling.jpg"/>
</Ellipse.Fill>
</Ellipse>
<TextBlock Text="Lesson 3 of 32" FontFamily="Georgia" FontStyle="Italic" FontSize="9" Margin="50, 100, 30, 0" HorizontalAlignment="Left" VerticalAlignment="Top"></TextBlock>
<Line Margin="150, 90, 0, 0" Y1="0" Y2="140" Stroke="#FFF1F1F1" StrokeThickness="1.75" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBlock FontFamily="Times New Roman" FontSize="32" Margin="160, 140, 0, 0" FontWeight="SemiBold" HorizontalAlignment="Left" VerticalAlignment="Top">
Nike Email Best <LineBreak/> Practices <LineBreak/>
<Line Margin="0, 13" X1="0" X2="80" Stroke="#FF642F" StrokeThickness="2.5"/>
</TextBlock>
<Line Margin="160, 300" X1="0" X2="150" Stroke="#FF642F" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
没有重叠的元素,TextBlock 位于 Grid Hierarchy 的顶部(尽管这似乎无关紧要)。谁能提供关于为什么会发生这种情况的见解?
【问题讨论】:
-
设计师很糟糕。我从不将它用于布局,只是偶尔大致了解我在 XAML 编辑器中所做的工作会是什么样子。
-
@EdPlunkett 我刚刚尝试拖放到相同的坐标并且它有效。我喜欢这个设计器,但我不知道为什么当 xml 代码相同时这才有效。
-
@LukeIsitt 您是否尝试过 210、97 以外的其他坐标?如果您将其向下、向上、向右、向左等移动一点,您可以看到效果是否被复制。
-
@thesystem 是的,它保持可见性直到 175、97。x 轴上的任何内容都会导致修剪。
-
@LukeIsitt 这很奇怪,尤其是在拖放到相同坐标时。好吧,很高兴你解决了它:-)