문제

MV-VM 응용 프로그램에서 사용자의 아바타를 보여 주어야합니다. 이미지는 viewModel 객체의 유형 이미지 소스 속성에 제공됩니다. 그래서 그것이 제가 현재 가지고있는 것입니다.

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

그러나 일부 사용자는 아바타가 구성되지 않았을 수 있으므로 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>

그리고 당신의 기본 일이없는 상황에서 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>

도움이 되었기를 바랍니다..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top