Wpf 图像的条件数据模板
根据布尔值(HistoryOn),尝试使用同一控件显示包含图像和不包含图像的列。下一个xaml代码可以工作,但始终显示图像Wpf 图像的条件数据模板,wpf,xaml,Wpf,Xaml,根据布尔值(HistoryOn),尝试使用同一控件显示包含图像和不包含图像的列。下一个xaml代码可以工作,但始终显示图像 <DataGridTemplateColumnx:Name="dgtc"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ItemsControl ItemsSource="{Binding
<DataGridTemplateColumnx:Name="dgtc">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding
Converter={StaticResource myDataRowToListConverter}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border x:Name="imageBorder" BorderThickness="1" BorderBrush="Black"
MouseLeave="imageBorder_MouseLeave"
MouseEnter="imageBorder_MouseEnter"Height="16">
<Image x:Name="myImage" Source="{BindingMyImagePath}"
MouseUp="Image_MouseUp" HorizontalAlignment="Center">
</Image>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
下一个xaml代码只显示路径,而不显示图像。怎么了
<DataGridTemplateColumn x:Name="dgtc">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding
Converter={StaticResource myDataRowToListConverter}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding MyImagePath}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding HistoryOn}" Value="true">
<Setter Property="ContentTemplate"
Value="{StaticResource imagesOff}" />
</DataTrigger>
<DataTrigger Binding="{Binding HistoryOn}" Value="false">
<Setter Property="ContentTemplate"
Value="{StaticResource imagesOn}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
在Windows中。资源:
<DataTemplate x:Key="imagesOn">
<Border x:Name="imageBorder1" BorderThickness="1" BorderBrush="Black"
MouseLeave="imageBorder_MouseLeave"
MouseEnter="imageBorder_MouseEnter"Height="16">
<Image x:Name="myImage" Source="{BindingMyImagePath}"
MouseUp="Image_MouseUp"HorizontalAlignment="Center">
</Image>
</Border>
</DataTemplate>
<DataTemplatex:Key="imagesOff">
<Border x:Name="imageBorder2" BorderThickness="1" BorderBrush="Black"
MouseLeave="imageBorder_MouseLeave"
MouseEnter="imageBorder_MouseEnter"Height="16">
</Border>
</DataTemplate>
您可以根据对象选择所需的模板。请查看此主题的详细示例
祝您好运简单得多,只直接使用
imagesOn
DataTemplate作为itemtplate(就像在第一个XAML中一样),并使用booleantVisibilityConverter将图像控件的Visibility属性绑定到HistoryOn属性。或者在图像控件的样式中使用DataTriggers来设置其可见性。仅设置可见性会避免长时间等待吗?HistoryOn表示显示图像的整个历史。需要几分钟…只要图像控件不可见,就不应尝试从绑定路径加载图像。试一试。事实上,即使Visibility=“Hidden”已加载图像。至少我在“诊断工具”窗口中看到了许多错误,它们是这样写的:捕获异常:System.dll中的“System.NotSupportedException”(“ImageSourceConverter无法从System.String转换”)。可见性如何?折叠?很好。那很好。关键是找到SelectTemplate应该具有的对象参数。结果是一个DataRowView。