【发布时间】:2017-01-14 19:11:13
【问题描述】:
在我的DataGridTemplateColumn 中,我设置了一个DataTemplate。
在里面我有一个Button,我将他的Visibility 属性绑定到折叠,但结果留下了像隐藏的空间。为什么?
如果我只写“Collapsed”,它可以工作,但我想绑定。也许我没有写完美的装订? 请帮忙
<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"));
}
}
}
【问题讨论】:
-
确保 DataContext.IsDeleteTravelVisible 是 Visibility 属性,而不是 bool 属性。
-
你好,Giangredorio。此属性是可见性属性,但这不会删除 spcae。为什么?私有可见性_isDeleteTravelVisible = Visibility.Collapsed;公共可见性 IsDeleteTravelVisible { 获取 { 返回 _isDeleteTravelVisible; } 设置 { _isDeleteTravelVisible = 值; if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("IsDeleteTravelVisible")); }}}
-
@LiranKremer,如果删除按钮是
Hidden而不是Collapsed,那么信息按钮之前会有空白,而不是Excel按钮之后 -
感谢我通过这个链接解决了问题stackoverflow.com/questions/20174094/…
标签: wpf datagridtemplatecolumn