2009-09-24 4 views
1

나는 ado.net 엔터티 프레임 워크와 도메인 서비스 클래스를 사용하여 SQL Server 데이터베이스에 바인딩하고 데이터를 내 데이터베이스에서 가져 오거나 내 데이터베이스로 가져 오는 C# Silverlight 비즈니스 응용 프로그램을 보유하고 있습니다. 나는 dataformtoolkit 네임 스페이스를 사용하여 편집/표시 할 수있는 레이아웃 텍스트 상자에 TwoWay 바인딩 모드를 사용하여 읽기/쓰기 기능을 허용하고 있습니다. 내가 대신 내가 원하는 모든 등 텍스트 상자의 콤보 상자를 사용하려면 일부 필드에 C# Silverlight Combobox -이게 뭐야?

는 DATAFORM의 일환으로 콤보를 3 문자열을 포함하는 일반적인 목록의 내용으로 채우고있다 내 모든 SQL 서버 데이터베이스에 변경 사항을 그대로 텍스트 상자 또는 확인란처럼 작동합니다 .........

지나치게 복잡하지 않으며 "저기에있는 것처럼 보이는 하나의 작업 샘플을 찾을 수 없습니다. "- 구속력이있는 이유는 무엇입니까? DATAFORM의

현재 설정 :

<!--DataForm Declaration--> 
<dataFormToolkit:DataForm x:Name="dataForm1" Height="410" Width="331" 
       VerticalAlignment="Top"  
       Header="Job Details" 
       CurrentItem="{Binding SelectedItem, ElementName=dataGrid1}" 
       HorizontalAlignment="Left" > 
      <dataFormToolkit:DataForm.EditTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <dataFormToolkit:DataField> 
         <TextBox Text="{Binding BusinessType, Mode=TwoWay}" /> 
         </dataFormToolkit:DataField> 
        </StackPanel> 
       </DataTemplate> 
      </dataFormToolkit:DataForm.EditTemplate> 
    </dataFormToolkit:DataForm> 

도움이 필요 일류 사전에 감사합니다!

답변

2

문자 그대로 같은 문제가있었습니다.

우리가 해낸 것입니다 :는 ObservableCollection에 귀하의 항목을 넣어

문자열 귀하의 목록에있는 (또는 객체가 정말) 콤보 상자에 사용할 수있는 장소에있을 필요가

. 이 클래스를 컴파일하면

public class ItemCollection : ObservableCollection<string> 
{ 
    public ItemCollection() 
    { 
     Add("Hi"); 
     Add("Howdy"); 
     Add("Hola"); 
    } 
} 

는 자신의 파일에, 당신이 그것을 참조해야합니다, 뷰 (XAML)

에서 콤보 상자에 목록 사용할 수 있도록합니다. xamns를 xaml 파일에 추가 할 클래스 라이브러리에 xmll을 추가 한 다음 xaml에 아래처럼 정적 참조를 추가합니다. A)리스트가 어디 있는지를 알려, 및 B) 넣어하는 방법을 알려주기 :

... 
xmlns:alibraryxmlnsfromabove="clr-namespace:MyProject;assembly=MyProject" 
... 


<!--This goes at the top of your page for resources> 
<navigation:Page.Resources> 
    <alibraryxmlnsfromabove:ItemCollection x:Key="ItemCollection"/> 
</navigation:Page.Resources> 

은보기에서 콤보 상자 위로 (XAML) 우리는 콤보 상자에 두 가지 일을 할 필요가

설정 선택한 항목 목록입니다 ItemsSource =

  • 의 selectedItem = 어디 우리가 그것을 선택할 때 항목을 넣어하는 방법.

참조 코드 :

<dataForm:DataForm.EditTemplate> 
    <DataTemplate> 
     <StackPanel> 
      <dataForm:DataField Label="Choose One"> 
       <ComboBox 
        ItemsSource="{StaticResource ItemCollection}" 
        SelectedItem="{Binding Path=FieldNameHere, Mode=TwoWay}"/>      
      </dataForm:DataField> 
     </StackPanel>         
    </DataTemplate> 
</dataForm:DataForm.EditTemplate> 

일부 측면 노트 :

당신이이 개체 모델에서 항목을 잡아 가지고 할 수 있도록보기는 ItemCollection의 새로운 인스턴스를 생성합니다 , DB 또는 Singleton 객체를 반환합니다.

이 프로세스의 다음 단계는 변환기를 사용하는 것입니다. 변환기를 사용하면 원시 데이터 유형 (이 샘플에서는 문자열을 사용함) 이외의 객체를 사용할 수 있습니다.그러나 그것은 또 다른 질문입니다.

행운을 빈다. 바라기를 이것은 당신을 거기에 데려다 준다.

+0

우수 답변. ItemSource와 Observable 컬렉션이 키입니다. –