2013-06-14 2 views
1

저는 데스크탑 WPF 앱 (.net 4)에서 작업하고 있습니다. 창 중 하나에 tabControl이 있으며 그 중 tabitems에는 Listview이 포함되어 있으며 그보기는 GridView입니다. TabItems, ListViews 및 GridViews는 모두 동적으로 생성됩니다. 사용자가 각 tabitem의 단추를 누르면 ListView보기가 DataTable defaultview가 SQL Server에서 업데이트됩니다 (물론 선택한 행은 사용자의 요청에 따라 다르지만 여기서는 관계가 없습니다).WPF ListView-GridView : 바인드 이미지

모든 내용은 아래의 (단축) 코드를 사용하여, 잘 작동하고 (GV) 동적으로 생성 GridView : 당신이 볼 수 있듯이

foreach (KeyValuePair<string, string> Column in Columns) 
{ 
    GridViewColumn gvc = new GridViewColumn(); 
    gvc.DisplayMemberBinding = new Binding(Column.Key); 
    gv.Columns.Add(gvc); 
} 

, 나는 열 이름의 열을 일치하는 사전을 만든 SQL Server에서받은 DataTable (Column.Value를 특수 용도로 사용하며 여기서는 관련 없음).

내 질문은 "간단한"입니다 : 컬럼의

하나는 내가 로고로 표시하고 싶은 값을 포함; SQL 서버 열에는 문자열 (예 : "a"또는 "b")이 들어 있으며 "a.png"및 "b.png"라는 이미지가 있습니다 (testimage.Source = new BitmapImage(new Uri("../../images/a.png", UriKind.Relative))과 같이 동적으로 표시 할 수 있음).

그래서 어떻게 C#에서 "List"열의 "a"와 "b"문자를 "a.png"및 "b.png"로 바꿀 수 있습니까?

나는 분명히하고, 내 질문에 대답하려고 노력하고 시간을 할애하는 모든 사람들에게 이미 감사하고 있기를 바랍니다.

답변

1

당신은 데이터가이

에 대한 귀하의 계산기 클래스 ValueConverter 바인딩 사용할 수 있습니다 - 당신의 코드 숨김

foreach (KeyValuePair<string, string> Column in Columns) 
{ 
    GridViewColumn gvc = new GridViewColumn(); 
    Binding binding = new Binding(Column.Key); 
    if (Column.Key == "Image") 
    { 
     binding.Converter = new MyImageConverter(); 
    } 
    gvc.DisplayMemberBinding = binding; 
    gv.Columns.Add(gvc); 
} 
+0

들으에서

public class MyImageConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string imageName = (string) value; return new BitmapImage(new Uri("../../images/" + imageName + ".png", UriKind.Relative)); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

을하지만 작동하지 않습니다 다음 displaymemberbinding를 MyImageConverter가 보낸 경로를 보여줍니다. 그러나, 모든 코드 솔루션을 갈 방법입니다,하지만 내 문제는 코드 숨김 변환기를 가리키는 datatemplate을 만드는 것입니다 ... –

+0

그래, 그것을 가지고, http : // social에 대한 전체 답변을 참조하십시오 .msdn.microsoft.com/Forums/ko-ko/wpf/thread/0de6df72-856a-4dc4-a063-ffc32baa393d –