2016-12-13 11 views
0

UserControl에서 이미지 (동적 리소스에서 제공)를 표시하는 단추를 원합니다. 응용 프로그램에서 동적 리소스를 사용할 수 없거나 제공되지 않으면 단추에 기본 콘텐츠가 표시되기를 원합니다.이미지 (동적 리소스에서)를 사용할 수없는 경우 버튼 기본 콘텐츠

제 아이디어는 이미지 원본이 null 인 동안 기본 콘텐츠를 이미지 아래에있는 텍스트 블록에 넣고 숨기 (그래서 빛나지 않습니다)하는 것이 었습니다. 그러나 DynamicResource가 해결되지 않으면이 조건이 작동하지 않는 것 같습니다. 이 경우 이미지 원본의 상태는 정확히 무엇입니까?

<Button Command="{Binding DoSomethingCommand}"> 
    <Grid> 
    <TextBlock Text="DefaultText" Visibility="Collapsed"> 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=TestImage, Path=Source}" Value="{x:Null}"> 
       <Setter Property="Visibility" Value="Visible"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
      </Style> 
      </TextBlock.Style> 
    </TextBlock> 
    <Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/> 
    </Grid> 
    </Button> 

적절한 해결책은 무엇입니까?

도움 주셔서 감사합니다. TextBlock입니다 리소스 조회에 성공에만 이미지가 표시되지 않습니다

<Button Command="{Binding DoSomethingCommand}"> 
     <Grid> 
      <TextBlock Text="DefaultText" /> 
      <Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/> 
     </Grid> 
    </Button> 

:

+0

보기 부분 즉 UI 측면에서 이미지가 동적 리소스에서 사용 가능하지 않은지 어떻게 결정합니까? –

+0

[FallbackValue] (https://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue (v = vs.110) .aspx)를 사용해 보셨습니까? – lena

+0

"바인딩"이 없기 때문에 FallbackValue를 사용할 수 없습니다. – tabina

답변

1

이보십시오. 이미지가 표시되고있는 경우

이 문제는 기본 콘텐츠를 통해 빛나는되었는지와 전체 기본 콘텐츠 다음이 약

무엇을 다룰하지 않는 이유는 무엇입니까?

<Button Command="{Binding DoSomethingCommand}"> 
     <Grid> 
      <Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/> 
      <TextBlock Text="DefaultText"> 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Setter Property="Visibility" Value="Collapsed" /> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=Source, ElementName=TestImage}" Value="{x:Null}"> 
           <Setter Property="Visibility" Value="Visible" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 
     </Grid> 
    </Button> 
+0

이 문제는 이미지가 표시되고 전체 기본 콘텐츠를 다루지 않는 경우 기본 콘텐츠가 빛을 발합니다. – tabina

+0

내 수정 된 답변을 참조하십시오. – mm8

+0

이상한 점은 스타일에 줄을 추가하는 것입니다. Grid의 TextBlock과 Image의 순서는 무의미한 것 같습니다. TextBlock에서 가시성을 직접 설정하는 것과 다른 점은 무엇입니까? – tabina