2011-11-21 4 views
3

내 WPF C# 프로젝트에 대한 사용자 선택 userControl 만들기. 선택 항목에 대한 사용자 지정 자동 완성 컨트롤을 만들었지 만 최적화 목적으로 WPF Toolkit에서 자동 완성 텍스트 상자를 사용하려고합니다.익명 형식 목록으로 AutoCompleteBox 채우기

DB에서 수천 명의 사용자가 있기 때문에 사용자 클래스를 사용하거나 목록에서 많은 foreach를 가져오고 싶지 않습니다. 그래서 그걸 염두에두고 여기 내 문제가 있습니다.

var list = from cu in conn3.customer_users 
select new { 
       username = cu.username, 
      name  = cu.fname.TrimEnd() + " " + cu.lname.TrimEnd() 
       // This would of course be built with more info from more entities. 

      }; 

      this.autoComplete.ItemsSource = list.ToList(); 

이제 문제는 결과 상자 (검색 중)에 대해 다음 형식을 출력한다는 것입니다.

{사용자 이름 = DEI1231, 이름 = 미시 앤더슨}

그래서 내가 해달라고 목록을 foreach는하지만 난 바인딩 또는 내가 목록을로 오히려 포맷하고 싶다.

아이디어가 있으십니까?

+0

내 답변이 도움이 되었습니까? –

+0

죄송합니다 며칠 동안 떨어져, 하지만 예! Parapura, 고맙습니다. 약간의 labb 시간과 나는 그것이 꽤 단단한 지금 생각한다. 고맙습니다. –

답변

-1

나는 시작 공간에 대해 더 신경 쓰지 않고 마침내 초기 공간을 허용하고 메타 끈의 모든 공백을 결국 제거하도록 결정했습니다.

문제는 사실 자기 자신이있는 경우에있는 것으로 판명 되었기 때문에 이것은 존재를위한 해결책이었습니다. 대신 실제 메시지 안의 태그를 사용하여 meta로 전환 한 이후로 더 많은 것을 보지 못했습니다. 그리고 접두사가 붙어 있습니다. 예 : @meta 어떻게 작동하는지 확인하십시오.)

private string metaInput { get; set; } 
    public string MetaInput 
    { 
     get 
     { 
      return metaInput; 
     } 

     set 
     { 
      string x = value; 
      if (x.Length > 3) 
      { 
       if (x.EndsWith(" ")) 
       { 

       string z = x.Replace(" ", ""); 
       x = z.Replace(",", ""); 
       int l = x.Length; 

        if (l > 2) 
        { 
         metaInput = null; 
         SaveMetaWord(x); 
        } 

        else 
        { 
         metaInput = null; 
        } 
       } 

      } 

      else 
      { 
       metaInput = value; 
      } 

     } 
    } 
1

당신은 선택 최종 문자열이 아닌 익명 형식이어야 다른 옵션은 익명 형식을 유지하고 또 다른 옵션이다 바인딩

<TextBlock > 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0} {1}"> 
      <Binding ElementName="username" Path="Text"/> 
      <Binding ElementName="name" Path="Text"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

StringFormat을 사용하는 것입니다

var str = from cu in x 
      // your stuff 
      select cu.username + cu.fname; 

익명 형식의 필드가 있어야 원하는 문자열을 표시하고 사용할 수 있습니다. DisplayMemberPath 바인딩의 경우