Wpf上的按钮可见性DataGridTemplateColumn是隐藏的Collaped

时间:2016-09-07 07:44:42

标签: wpf datagridtemplatecolumn

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>

sample

代码

private Visibility _isDeleteTravelVisible = Visibility.Collapsed; 
public Visibility IsDeleteTravelVisible { 
    get { return _isDeleteTravelVisible; } 
    set { _isDeleteTravelVisible = value; 
         if (PropertyChanged != null) { 
            PropertyChanged(this, new PropertyChangedEventArgs("IsDeleteTravelVisible")); 
            }
        }
    }

3 个答案:

答案 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]