2012-09-04 2 views
0

저는 WPF에 익숙하지 않습니다, 여기 퍼즐 게임을 만들고 있지만 문제가 발생했습니다 : 순수한 코드 (XAML에서는 할 수 있습니다.)에서 레이블에 이미지를 표시하는 방법을 알지 못합니다. Google을 많이 검색했지만이 주제와 관련하여 관련 기사를 찾지 못했습니다. 누구든지이 일에 나를 도울 수 있습니까? 고마워.순수한 코드를 사용하여 WPF에서 Label의 이미지를 바인딩하는 방법은 무엇입니까?

내 코드 샘플 :

 Label lbl = new Label(); 
     lbl.Width = 120; 
     lbl.Height = 120; 
     lbl.Background = new SolidColorBrush(Colors.YellowGreen); 

     BitmapImage myImageSource = new BitmapImage(); 
     myImageSource.BeginInit(); 
     myImageSource.UriSource = new Uri("Images/test.png",UriKind.Relative); 
     myImageSource.EndInit(); 

     lbl.Background.SetValue(ImageBrush.ImageSourceProperty, myImageSource); 

     myGridContainer.Children.Add(lbl); 

아니라,이 코드 샘플이 작동하지 않을 수 있습니다. 왜 ? 어떤 의견이나 대답을 주시면 감사하겠습니다.

+0

나는 당신이 ImageBrush와 대신 SolidColorBrush를 사용한 적이 있기 때문에 생각합니다. http://msdn.microsoft.com/en-us/library/system.windows.media.imagebrush.aspx – Gishu

+0

@ Gishu 코드를 주석 처리 할 때 다음을 참조하십시오. lbl.Background = new SolidColorBrush (Colors.YellowGreen); , 그것은 예외를 던졌습니다 lbl.Background.SetValue (ImageBrush.ImageSourceProperty, myImageSource); "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." – CharlieShi

+0

대신'lbl.Background = new ImageBrush()'를 사용하십시오. IanGriffith의 'Programming WPF'와 같은 좋은 WPF 책을 구하는 Chris Sells는 코드 작성을 더 빨리 도와줍니다. – Gishu

답변

1

BindingOperations.SetBinding을 사용하여 DependencyProperty를 해당 원본에 데이터 바인딩 할 수 있습니다.

은 참조 : How can I create a tiled image in code that is also data-bound?

+0

죄송합니다, 최신이며 더 이상 권장하지 않는 기사의 옵션을 가져올 수 없습니다. BindingOperations 사용법을 모르겠습니다. – CharlieShi

+0

나는 일부분을 바꿨다. pls 좀 보 겠니? 고마워. – CharlieShi

+0

http://stackoverflow.com/questions/4586028 이미지의 Source 속성 (레이블 내용 일 수 있음)을 바인딩해야하는 경우. 코드에서 데이터 바인딩을 설정하려면이 MSDN 방법을 참조하십시오. http://msdn.microsoft.com/en-us/library/ms742863.aspx. 이제는 기사 에서처럼 TextBlock.TextProperty 대신 Image.Source를 바인딩하는 지식 만 사용해야합니다. – Gishu

관련 문제