WPF 除了设置MAX还有啥办法设置控件不撑大
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 除了设置MAX还有啥办法设置控件不撑大相关的知识,希望对你有一定的参考价值。
<ScrollViewer HorizontalScrollBarVisibility="Auto" CanContentScroll="False" VerticalScrollBarVisibility="Auto" Width="200" Height="200">
<Grid Background="Red">
<Grid.RowDefinitions>
<RowDefinition MinHeight="100"/>
<RowDefinition MinHeight="100"/>
<RowDefinition MinHeight="100"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="100"/>
<ColumnDefinition MinWidth="100"/>
<ColumnDefinition MinWidth="100"/>
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Grid.Column="0" Background="Blue" UseLayoutRounding="True">
<Border BorderBrush="Red" Width="200" Height="200" Background="Red"/>
</Border>
<Border Grid.Row="0" Grid.Column="1" Background="Blue"></Border>
<Border Grid.Row="0" Grid.Column="2" Background="Blue"></Border>
<Border Grid.Row="1" Grid.Column="0" Background="Blue"></Border>
<Border Grid.Row="1" Grid.Column="1" Background="Blue"></Border>
<Border Grid.Row="1" Grid.Column="2" Background="Blue"></Border>
<Border Grid.Row="2" Grid.Column="0" Background="Blue"></Border>
<Border Grid.Row="2" Grid.Column="1" Background="Blue"></Border>
<Border Grid.Row="2" Grid.Column="2" Background="Blue"></Border>
</Grid>
</ScrollViewer>
<Border BorderBrush="Red" Width="200" Height="200" Background="Red"/>
注意不要使用相对坐标系 Margin来定义控件位置,这个会时刻改变。
WPF Bind设置了Source还需要对绑定控件的Content进行设置吗?
控件绑定一般是:
textBlock.Content = person;
BInding binding = new binding("PersonName");
textBlock.SetValue(TextBlock.BindingProperty, binding);
但在Binding中还有一个Source.这个Source是干什么用的呢?
如果是资源的话,是不是不用设置Content了?比如:
BInding binding = new binding("PersonName");
binding.Source = person;
textBlock.SetValue(TextBlock.BindingProperty, binding);
binding.Source = person;
txtBlock.SetBinding(TextBlock.TextProperty, binding);
首先TextBlock没有Content属性,有Text属性。
Source是绑定对象中的一个参数,这个参数不一定要设置,需要看如何进行数据绑定。
然而设置绑定使用针对TextBlock的某一依赖属性的,这里应该是TextProPerty吧。
关于数据绑定,可以参考下博文:http://blog.csdn.net/rabbitsoft_1987/article/details/19297073
追问是DataContext.
1直接将一个对象绑定至控件的DataContext,之后通过Binding指定依赖属性绑定的字段(SetBinding).
2将一个对象传给Binding的Source.之后通过Binding指定依赖属性绑定的字段(SetBinding).
以上两种区别就是数据源关联的方法: 一种是DataContext,一种是Binding的Source.
这两种等效吗?
效果是一样的,是两种绑定的模式,可以看下上面的博文
Binding bd=new Binding();bd.Path=new PropertyPath("id");
bd.Source=parent;
txtBlock1.SetBinding(TextBlock.TextProperty, bd);
bd = new Binding();
bd.Path = new PropertyPath("id");
txtBlock2.SetBinding(TextBlock.TextProperty, bd);
txtBlock2.DataContext = parent; 参考技术A Binding 的源(source)也就是数据的源头。Binding对源的要求并不苛刻------只要它是一个对象,并且通过属性(Property)公开自己的数据,它就能作为Binding 的源。
如果想让作为Binding源的对象具有自动通知Binding自己属性值已经已经变化的能力。那么就需要让类实现INotifyChanged接口并在属性的Set语句中激发PropertyChanged事件。在日常生活中,除了使用这种对象作为数据源之外,我们还有更多的选择,比如控件把自己的容器或子集元素当源、用一个控件做为另一个控件的数据源,把集合作为ItemControl的数据源、使用XML作为TreeView或Menu的数据源。把多个控件关联到一个“数据制高点”上,甚至干脆不给Binding指定数据源、让他自己去找。
以上是关于WPF 除了设置MAX还有啥办法设置控件不撑大的主要内容,如果未能解决你的问题,请参考以下文章
除了设置断点之外,还有啥方法(通过设置或扩展)来查看和使用 VSCODE 中的变量。喜欢蜘蛛?
WPF设置控件获取键盘焦点时的样式FocusVisualStyle