在DataGridTemplateColumn
我设置DataTemplate
。
在里面我有一个Button
并且我将他的Visibility
属性绑定到折叠状态,但结果会像Hidden一样留下空间。为什么呢?
如果我只是写'#34;倒塌"它的作品,但我想绑定。也许我没有写出完美的装订? 请帮忙
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<StackPanel Width="auto" Orientation="Horizontal" >
<Button Click="DeleteTravelDetails" Visibility="{Binding DataContext.IsDeleteTravelVisible,RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}">
<Image Source="/Resources;component/Images/delete3.jpg" Width="auto" Height="30" ToolTip="Delete Travel" />
</Button>
<Button Click="ExpensesTravelClick" Margin="4,0,0,0" >
<Image Source="/Resources;component/Images/information.png" Width="auto" Height="30"/>
</Button>
<Button Click="ExcelTravelClick" Margin="4,0,0,0" >
<Image Source="/Resources;component/Images/excel.jpg" Width="auto" Height="30"/>
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
代码
private Visibility _isDeleteTravelVisible = Visibility.Collapsed;
public Visibility IsDeleteTravelVisible {
get { return _isDeleteTravelVisible; }
set { _isDeleteTravelVisible = value;
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs("IsDeleteTravelVisible"));
}
}
}
答案 0 :(得分:0)
在这种情况下,DataGrid单元格的宽度取决于DataGrid列的宽度。 在您的情况下,可见性属性确实设置为折叠,StackPanel宽度定义为auto,因此即使它不可见,它也会更小,但列宽度决定了包含堆栈面板的单元格的宽度。
https://msdn.microsoft.com/en-us/library/cc903935(v=vs.95).aspx 链接包含DataGrid的大小调整信息,请查看“调整列和列标题”部分
答案 1 :(得分:0)
正如@Ivan Milenkovic所说,你看到的大小取决于网格列。
在此stackoverflow答案中,您可以看到在列或按钮可见性发生更改时如何更新列大小: https://stackoverflow.com/a/5651287/2289942
答案 2 :(得分:-1)
谢谢大家。 我从这个链接解决了这个问题:
[enter link description here][1]