我是WPF的新手,我想做的就是下面的内容。这是我的XAML代码:
CustomWidth = 500
我必须在ViewModel中编写的所有逻辑代码(不允许在代码隐藏中),在VM的构造函数中我设置了属性RelayCommand
并在搜索的- (UIImage*) getSubImageWithRect: (CGRect) rect {
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
// translated rectangle for drawing sub image
CGRect drawRect = CGRectMake(-rect.origin.x, -rect.origin.y, self.size.width, self.size.height);
// clip to the bounds of the image context
// not strictly necessary as it will get clipped anyway?
CGContextClipToRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height));
// draw image
[self drawInRect:drawRect];
// grab image
UIImage* subImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return subImage;
}
操作中按钮我将值更改为300.在第一次运行(加载事件)时可以将ctrl width增加到500,但是然后我单击Search按钮将其缩小到300,没有任何反复发生。
任何人都可以告诉我为什么它没有生效并且如何让它起作用?提前谢谢。
答案 0 :(得分:0)
请查看本文[来源] DataGrid column width doesn't auto-update。简而言之,它不能像前面提到的那样自动完成,但是如果你想在这里编写代码,那么这个堆栈溢出的一些信息就如何成功/动态地完成。我认为有两个主要部分。将宽度更新为1 *并通知属性已更改。
private void dg_TargetUpdated(object sender, DataTransferEventArgs e)
{
dg.Columns[0].Width = 0;
dg.UpdateLayout();
dg.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}
通知属性已更改。
<DataGridTextColumn Binding="{Binding First}" Width="1*"/>
<DataGridTextColumn Binding="{Binding Last, NotifyOnTargetUpdated=True}"
答案 1 :(得分:-1)
DataGrid一旦增加就不会减小它的大小,因为它会说一些较大的单元格内容,并且如果你设置了ColumnWidth =“SizeToCells”。您必须编写自己的逻辑才能实现此目的,或者您可以将其设置为SizeToHeader,并在该单元格的工具提示中显示更大的单元格内容。