gpt4 book ai didi

wpf - 取决于 DataContext 的条件框架元素

转载 作者:行者123 更新时间:2023-12-01 11:09:51 29 4
gpt4 key购买 nike

在我的 M-V-VM 应用程序中,我必须显示用户的头像。图像在 ViewModel 对象的 ImageSource 类型的属性中提供。这就是我目前拥有的:

<Image Source="{Binding Path=UserAvatar}"/>

但是,有些用户可能没有配置头像,所以UserAvatar为null。在那种情况下,我想显示一个默认头像。除了 View 之外,没有人必须知道默认图像,因为它只是表示的一个问题。

那么,如果 ImageSource 为 null,我该如何显示具有给定 ImageSource 或特定资源的图像。我是否必须将某种 DataTemplate 与 DataTriggers 一起使用?因为现在我只将它们用于 ItemsControl,所以我不知道。

最佳答案

正如您猜对的那样,模板和触发器确实是您的好 helper 。

下面是一个使用 ContentControl 的实现:

<ContentControl Content="{Binding Path=UserAvatar}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Image x:Name="image" Source="{Binding}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter TargetName="image" Property="Source" Value="--your awesome default image here--" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>

如果您的默认设置不是 ImageSource,并且您希望尝试使用其他控件,您可以随时求助于 Visibilty 属性:

<ContentControl Content="{Binding Path=UserAvatar}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Grid>
<Image x:Name="image" Source="{Binding}" />
<Canvas x:Name="defaultImage" Visibility="Collapsed" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter TargetName="image" Property="Visibility" Value="Collapsed" />
<Setter TargetName="defaultImage" Property="Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>

希望这有帮助..

关于wpf - 取决于 DataContext 的条件框架元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1206437/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com