Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 图像的条件数据模板_Wpf_Xaml - Fatal编程技术网

Wpf 图像的条件数据模板

Wpf 图像的条件数据模板,wpf,xaml,Wpf,Xaml,根据布尔值(HistoryOn),尝试使用同一控件显示包含图像和不包含图像的列。下一个xaml代码可以工作,但始终显示图像 <DataGridTemplateColumnx:Name="dgtc"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ItemsControl ItemsSource="{Binding

根据布尔值(HistoryOn),尝试使用同一控件显示包含图像和不包含图像的列。下一个xaml代码可以工作,但始终显示图像

<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。