如何按比例调整WPFListview的大小?我在调整Listview控件的大小时遇到??了一些问题。我打算根据窗口的实际大小按比例调整大小。对于Listview的初始大小,它是以像素为单位的300X600(宽度X高度)。我还将其maxHeight设置为750,但其宽度保持不变,即300。此外,在Wondow的属性中,我已将SizeToContent属性更改为WidthAndHeight,因为一些线程建议您让系统在调整大小后决定控件的正确大小窗户。但是,它还没有奏效。所以我来这里寻求帮助。谢谢。无论如何我们可以在WPF中设置宽度和高度的百分比值?如果允许我使用像height=80%这样的百分比,事情会容易得多。编辑:为了更清楚起见,这里是xaml中的一般代码结构如您所见,我目前正在使用2个堆栈面板并将它们放在不同的行中。但即使我改变它,Listview仍然不会按比例调整大小。将ListView放入网格中,并为列使用“*”宽度特性:...本例中的第0列的宽度为“4*”,第1列的默认宽度为“1*”。这意味着它们之间的宽度为“五颗星”,第0列为四个条。这将为您提供80%的宽度。仅供参考,我发现有用的东西这是一个值转换器,可以与ListView一起使用,并允许调整文章中星号列的大小://////计算填充GridView中的视图所需的列宽//有关使用示例,请参阅http://leghumped.com/blog/2009/03/11/wpf-gridview-column-width-calculator////publicclassWidthConverter:IValueConverter{//////转换指定的值。//////父列表视图。///方式。//////如果没有给出参数,将返回remaningwith。///如果参数是一个整数作为MinimumWidth,只有当它大于参数时才会返回剩余的值///如果参数是其他任何东西,它被认为是一个百分比。例如:0.3*=30%,0.15*=15%//////文化。///宽度,由给定的参数publicobjectConvert(objectvalue,Typetype,objectparameter,CultureInfoculture){if(value==null)returnnull;ListViewlistView=valueasListView;GridViewgrdView=列表视图。查看为GridView;int最小宽度=0;boolwidthIsPercentage=parameter!=null&&!int.TryParse(parameter.ToString(),outminWidth);如果(widthIsPercentage){字符串widthParam=parameter.ToString();双百分比=double.Parse(widthParam.Substring(0,widthParam.Length-1));返回listView.ActualWidth*百分比;}else{双总数=0;for(inti=0;iminWidth){//填充ListView中的剩余宽度returnremainingWidth;}else{//用MinWidth填充剩余空间returnminWidth;}}}publicobjectConvertBack(objecto,Typetype,objectparameter,CultureInfoculture){thrownewNotSupportedException();如果您不带参数调用它,它将取ListView中的剩余宽度://fillsremainingwidthintheListView如果使用整数作为参数,则此值将用作最小宽度//fillsremainingListView中的宽度,除非剩余的宽度小于参数或者,你可以使用星号指定一个GridView类型的宽度,并返回ListView的百分比宽度//计算出ListView宽度的30%这是我用来按比例调整WPFListView列的大小,以便在调整大小后不会出现水平滚动条这可以处理任意数量的列,以及垂直滚动条的存在。不使用转换器,仅更改大小的事件处理程序。到目前为止,这工作得很好。唯一的缺点是当用户调整窗口大小时水平滚动条有时会??闪烁。LV_FileList.SizeChanged+=this.onLV_FileList_SizeChanged;...以上就是C#学习教程:如何按比例调整WPFListview的大小?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——//////当listview大小改变时,按比例调整listview列的大小/////////privatevoidonLV_FileList_SizeChanged(objectsender,SizeChangedEventArgse){if((senderisListView)&&(e.PreviousSize.Width>0)){doubletotal_width=0;GridViewColumnCollectiongvcc=((GridView)(senderasListView).View).列;foreach(GridViewColumngvcingvcc){gvc.Width=(gvc.Width/e.PreviousSize.Width)*e.NewSize.Width;total_width+=gvc.Width;}//如果整数除法使总宽度变小,则增加最后一列的宽度以适应列表视图的宽度if(total_width(LV_FileList);while((svFileList.ComputedHorizo??ntalScrollBarVisibility!=Visibility.Collapsed)&&(gvcc[gvcc.Count-1].Width>1)){gvcc[gvcc.Count-1].Width--;this.AllowUIToUpdate();}}}//////Th读取调用以在调整大小循环中处理更新UI///privatevoidAllowUIToUpdate(){DispatcherFramedFrame=newDispatcherFrame();Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Render,newDispatcherOperationCallback(delegate(objectparameter.Context){dFra;returnnull;}),null);Dispatcher.PushFrame(dFrame);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
