Tho*_*erg 3 wpf xaml datatrigger mvvm frameworkelement
在我的MV-VM应用程序中,我必须显示用户的头像.该图像在ViewSodel对象的ImageSource类型的属性中提供.这就是我目前所拥有的:
<Image Source="{Binding Path=UserAvatar}"/>
Run Code Online (Sandbox Code Playgroud)
但是,某些用户可能没有配置头像,因此UserAvatar是null.在这种情况下,我想显示一个默认的头像.没有人,但视图必须知道默认图像,因为它只是一个关注的演示.
那么如何使用给定的ImageSource显示图像,或者如果是ImageSource则显示特定的资源null.我是否必须在DataTriggers中使用某种DataTemplate?从现在起我只将它们用于ItemsControls,所以我不知道.
正如你猜对了,模板和触发器确实是你的朋友.
这是一个使用以下的实现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>
Run Code Online (Sandbox Code Playgroud)
如果您的默认设置为no 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>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助..
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |