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"/>

参考技术A 在WPF一般不要使用固定的长宽. row和column有auto,*等控制排版,控件中有HorizontalAlignment,VerticalAlignment,HorizontalContentAlignment,VerticalContentAlignment排版 参考技术B 指定控件的Height 和Weight即可,不会随着窗口的变化而变化。
注意不要使用相对坐标系 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 binding = new Binding("PersonName");
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还有啥办法设置控件不撑大的主要内容,如果未能解决你的问题,请参考以下文章

wpf 设置控件的显示时间

除了设置断点之外,还有啥方法(通过设置或扩展)来查看和使用 VSCODE 中的变量。喜欢蜘蛛?

WPF设置控件获取键盘焦点时的样式FocusVisualStyle

wpf中动态添加的自定义控件过宽,不能完全显示,怎么办

WPF Bind设置了Source还需要对绑定控件的Content进行设置吗?

除了关机24小时还能有啥办法清空设置电池数据?