2014-09-11 1 views
0

openfiledialog로 이미지를 선택하고 싶지만 '대화 상자는 사용자가 시작해야합니다.'라는 오류가 있습니다.openfiledialog을 silverlight에서 사용하는 방법

버튼을 클릭 이벤트

OpenFileDialog fdialog = new OpenFileDialog(); 
bool? IsSelected = fdialog.ShowDialog(); 
fdialog.Filter = "Pictures (*.png)|*.png"; 
if (IsSelected == true) 
{ 
    BitmapImage bitImage = new BitmapImage(); 
    bitImage.SetSource(fdialog.File.OpenRead()); 
    imgKisi.Source = bitImage; 
} 

답변

0

그것은 실버 보안 제한입니다.

기본적으로 기본 스레드에서만 발생하는 사용자 동작 (예 : 클릭)으로 인해 발생하는 이벤트에 대한 응답으로 SaveFileDialog 또는 OpenFileDialog를 직접 열어야합니다. 사용자 코드가

1

)하지 메인 스레드입니다 논리 스레드에서 실행되기 때문에 그래서, 당신은 정상적인 방법에서 사용자 코드에서 이러한 대화 상자를 열 수 없습니다, 그리고

2) 반드시 실행하지 사용자 조치로 인한 이벤트 응답.

사용자 정의 컨트롤을 만들고 사용자 이벤트 (예를 들어, 버튼 클릭)에 대한 응답으로 대화 상자를 엽니 다

당신은 기본적으로 보안 제한을 해결하기 위해 두 가지 옵션이 있습니다. 이것이 Excel 수입업자와 사무 통합 팩 확장이 작동하는 방법입니다. 단추 컨트롤에서 FindControl 메서드를 사용하고 사용 가능한 컨트롤 이벤트의 단추에 클릭 이벤트 처리기를 구독합니다. 클릭 이벤트 핸들러에 대화 코드를 작성하십시오. DevExpress 확장 기능이 어떻게 작동하는지 잘 모르겠지만 제 생각에 그들은 첫 번째 방법을 사용합니다 (그들은 UI를 만들고 대화 상자를 여는 UI에 대한 이벤트 처리기를 사용합니다). 이 for a workaround

+0

ı에

봐이 링크에서이 예제를 시도했지만 같은 오류가 발생했습니다. – user3296152

+0

나는 그것을 시험해 보았다, 그것은 나를 위해 일한다. .. 당신은 zip 파일을 다운로드 했느냐? 웹 페이지에 '이 팁의 코드는 여기에서 다운로드 할 수 있습니다.'라고 표시됩니다. –

+0

예, ı 다운로드 및 실행되었지만 실행되지 않았습니다. – user3296152

관련 문제