我在窗口中定义了一个TextBox,如下所示:
<Window x:Class="NS.MainWindow"
...
SizeToContent="WidthAndHeight">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition MinHeight="50" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0">Description:</TextBlock>
<TextBox Grid.Column="1" Grid.Row="0" TextWrapping="WrapWithOverflow" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
问题是,当用户键入TextBox时,它会向右扩展,因为只设置了MinWidth.我真正想要的是要包装到下一行的文本.如果我将列上的MinWidth更改为Width,我可以这样做.但是,如果我这样做,那么在调整Window大小时TextBox不再调整大小.
有没有办法可以兼顾两者?(即仅在Window调整大小时调整大小,否则换行)
Windows Form开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?
我是 WPF 的新手,所以以下问题的答案可能很明显,但对我来说不是。我需要显示一个图像,用户可以在其中设置标记(例如:您可能想用矩形在照片上标记一个人的脸),但是在缩放图像时标记需要保持它们的相对位置。
目前我通过使用 aCanvas并将a设置ImageBrush为背景来做到这一点。这将显示图像,我可以Label在图像顶部添加诸如 a (作为矩形的替代品)之类的元素。但是当我设置这样的标签时,它的位置是绝对的,所以当底层图片被缩放时(因为用户将窗口拖得更大)Label,它会保持在它的绝对位置(比如 100,100)而不是移动到新位置它与底层图像“同步”。
简而言之:当我在一个人的眼睛上设置一个标记时,缩放窗口后它不应该在这个人的耳朵上。
关于如何在 WPF 中做到这一点的任何建议?也许首先Canvas是错误的方法?我可以在代码中保留一组标记,并在每次调整窗口大小时重新计算它们的位置,但我希望有一种方法可以让 WPF 为我完成这项工作:-)
我很想听听您对此的意见。谢谢
我有一个Canvas带有Rectangle:
<Canvas>
<Rettangle/>
</Canvas>
Run Code Online (Sandbox Code Playgroud)
我希望,当我调整画布大小时,矩形保持相同的相对位置,例如:
----------------------------------------
| |
| |
| ____ |
| | | |
| |____| |
| |
|--------------------------------------
--------------------
| |
| ___ |
| |__| |
| |
|-------------------
Run Code Online (Sandbox Code Playgroud)
我能怎么做?
我有以下代码.
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="100*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100*" />
<RowDefinition Height="100*" />
<RowDefinition Height="100*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Width="30*">
...
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我试图将Stackpanel宽度设置为单元格的30%.我已经提到了WPF的帖子:将宽度(和高度)设置为百分比值.按照帖子它应该在网格中将宽度设置为30*.但它显示错误"30*字符串无法转换为长度".所以我想纠正错误,或者我只想找到一种方法来设置宽度为30%的单元格的堆栈面板.谢谢.