2014-09-28 2 views
1

자산 경로를 제공하는 특정 함수가있는 정적 클래스가 있습니다. 현재 바인딩을 위해 모든 뷰 모델에서 해당 함수를 감싸는 래퍼를 작성하고 있습니다. Windows 전화 8.1에서 정적 기능을 이미지 소스에 직접 바인딩하는 방법이 있는지 궁금합니다. wpf에서 Objectdataprovider는 유용했지만 Windows 스토어 앱에서는 지원되지 않습니다. 나는 어떤 문서도 찾을 수 없었다. 사전Windows 스토어에서 바인딩을위한 정적 메서드 사용

+0

함수를 속성으로 수정할 수 있습니까? 그렇다면 [this]와 같은 정적 속성에 바인딩 할 수 있습니다. (http://stackoverflow.com/questions/936304/binding-to-static-property) – kennyzx

+0

이전에 시도했습니다. 이 오류를 가져 오는 중 "형식 FooBar 추상 및 명시 적 값을 포함해야합니다" 나는 정적이 아닌 클래스를 변환 havent. –

+0

속성 대신 함수를 사용하는 특별한 이유가 있습니까? 'ImagePath'는 함수 대신 속성이어야하는 것처럼 보입니다. –

답변

1

그것은 (현재) 가능하지가 같은 바인딩을 정적 클래스에 바인딩 년대에

<Rectangle.Fill> 
<ImageBrush Stretch="Fill" 
      ImageSource="{Binding ImagePath"/> 
</Rectangle.Fill> 

덕분에 개체 인스턴스가 필요합니다. 그러나 클래스의 정적 속성에 바인딩 할 수 있습니다.

public class BindingHelper 
    { 
    public static string ImagePath 
    { 
     get { return AssetHelper.ImagePath; } 
    } 
    } 

지금이 BindingHelper에 대한 응용 프로그램 자원을 만듭니다 :

<application.resources> 
    <BindingHelper x:key="BindingHelperResource"></BindingHelper > 
</application.resources> 

을 그리고 당신의 바인딩이 자원을 사용

당신은 정적 클래스 주위에 인스턴스 랩퍼를 작성

<textblock text="{Binding Path=ImagePath, Source={StaticResource BindingHelperResource}}"> 
+0

Windows phone 8.1에서 BindingHelper를 찾을 수 없습니다. –

+0

BindingHelper 클래스를 만듭니다. 정적 클래스를 감싸는 래퍼 일뿐입니다. 또한 AssetHelper.Image 경로를 실제 정적 클래스 및 정적 메서드의 이름으로 바꿉니다. – Postlagerkarte

+0

그게 효과가있다. 나는 그것이 오류를 얻고있는 정적 함수를 사용했기 때문에라고 생각한다. 알아 둘만한. 감사!! –

관련 문제