我有一个WPF DataGrid,它有3列。第一条和第二条将显示与该条目相关的符合某些条件的图标。第三列是项目的名称。我的代码如下:
<DataGrid x:Name="DG_Items" DisplayMemberPath="{x:Null}" Margin="5"
HeadersVisibility="None" AutoGenerateColumns="False"
CanUserReorderColumns="False" CanUserResizeColumns="False"
CanUserSortColumns="False" IsReadOnly="True" IsEnabled="True"
ItemsSource="{Binding}" Initialized="DG_Items_Initialized"
MouseMove="DG_Items_MouseMove" SelectionChanged="DG_Items_SelectionChanged">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Attachment" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="Images/Attachment_16x16.png" Visibility="Hidden"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Comment" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="Images/Comment_16x16.png" Visibility="Hidden"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=ItemName, Mode=OneWay}" Width="*" />
</DataGrid.Columns>
</DataGrid>如您所见,图标(附件和注释)是Visibility="Hidden"。ItemSource是在如下方法中使用实体框架动态填充的:
public void UpdateDG_Items()
{
DG_Items.ItemsSource = DB.Item.Where(x => x.CodTipoItem == codTipoItemSelecionado && x.SituacaoRegistro != 9)
.OrderBy(x => x.NomeItem).ToList();
DG_Items.DisplayMemberPath = "ItemName";
DG_Items.SelectedValuePath = "CodItem";
}我只想在具有附件、注释或两者兼有的项目的行中显示图标。我没能在XAML中触发。
发布于 2014-01-30 12:46:36
你可以用转换器来做这件事,就像这样:
这在视图的xaml文件中
xmlns:converter="clr-namespace:<YourProjectName>.Converters"这是你的转换器:
class TrueToVisibilityVisible : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (bool)value ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//you could implement this if you wil use it ;-)
throw new NotImplementedException();
}
}这就是你如何使用它的方法:在你的数据农业中
<Image Source="Images/Comment_16x16.png" Visibility="Hidden"/>用这个代替
<Image Source="Images/Comment_16x16.png" Visibility="{Binding <PropertyToBind>, Converter={StaticResource <converterName>}}"/>顺便说一句,在视图的参考资料中,您就是这样声明它的
<converter:TrueToVisibilityVisible x:Key="<converterName>"/>祝你好运:-)
发布于 2014-01-30 13:39:28
您可以使用“触发器”:“数据触发器”(将其绑定到第一列的值)和“事件触发器”来自定义数据列的可见性。
https://stackoverflow.com/questions/21456381
复制相似问题