programing

선택한 항목 간의 차이항목, 선택된 값 및 선택된 값 경로

kakaobank 2023. 5. 17. 23:20
반응형

선택한 항목 간의 차이항목, 선택된 값 및 선택된 값 경로

다음의 차이점은 무엇입니까?

이러한 모든 종속성 속성은 선택기 클래스에 정의됩니다.나는 종종 헷갈립니다.SelectedItem와 함께SelectedValue,그리고.SelectedValue와 함께SelectedValuePath.

나는 그것들 사이의 차이점을 알고 싶고, 또한 우리가 그것들을 언제 사용하는지, 특히.SelectedValue그리고.SelectedValuePath 가지 간단한 예를 들어 사용법을 설명해 주십시오.

그들의 이름은 약간 혼란스러울 수 있습니다 :)다음은 요약입니다.

  • 선택됨Item 속성은 목록이 바인딩된 전체 개체를 반환합니다.그래서 당신이 목록을 다음의 컬렉션에 묶었다고 가정해 보세요.Category개체(이름 및 ID 속성을 가진 각 범주 개체).예를 들면ObservableCollection<Category>.그SelectedItem속성에서 현재 선택한 항목을 반환합니다.Category물건.그러나 바인딩을 위해 이것이 항상 원하는 것은 아닙니다. 이는 전체 카테고리 개체를 해당 카테고리 개체에 대한 단일 속성 값이 아니라 목록이 바인딩되는 속성에만 바인딩할 수 있기 때문입니다.ID재산).

  • 따라서 SelectedValuePath 속성과 SelectedValue 속성을 바인딩의 대체 수단으로 사용합니다(서로 함께 사용).예를 들어 당신에게Product보기가 바인딩되는 개체(예: ProductName, Weight 등의 속성 포함)입니다.또한 당신이 가지고 있다고 가정해 봅시다.CategoryID사용자가 범주 목록에서 제품에 대한 범주를 선택할 수 있도록 하려면 해당 제품 개체의 속성을 선택해야 합니다.Category 개체의 ID 속성을 할당해야 합니다.CategoryID속성을 지정할 수 있습니다.여기가 바로 그 곳입니다.SelectedValuePath그리고SelectedValue속성이 들어옵니다.Category 개체의 ID 속성을 목록이 사용하도록 바인딩된 Product 개체의 속성에 할당하도록 지정합니다.SelectedValuePath='ID'그런 다음 바인딩합니다.SelectedValue데이터 컨텍스트의 속성에 대한 속성(즉,제품)을 선택합니다.

아래의 예는 이를 보여줍니다.카테고리 목록에 결합된 ComboBox가 있습니다(항목을 통해)출처).SelectedValue 속성을 사용하여 제품의 CategoryID 속성을 선택한 값으로 바인딩합니다.SelectedValuePath 속성을 통해 범주의 ID 속성과 연결됩니다.또한 Name 속성은 DisplayMemberPath 속성과 함께 ComboBox에만 표시됩니다.

<ComboBox ItemsSource="{Binding Categories}" 
          SelectedValue="{Binding CategoryID, Mode=TwoWay}" 
          SelectedValuePath="ID" 
          DisplayMemberPath="Name" />
public class Category
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class Product
{
    public int CategoryID { get; set; }
}

처음에는 좀 헷갈리지만, 이것이 좀 더 명확하게 해주길 바랍니다.:)

크리스

조금 더 개념적으로 대답하자면:

SelectedValuePath ListBox에 바인딩된 개체의 속성(이름)을 정의합니다.ItemsSource항의항로사용니다됩목으로 됩니다.SelectedValue.

가 ListBox의 있는 Person각각이 가지고 있는 물체.Name,Age,그리고.Gender 특성.SelectedValuePath=Name한 이 발생합니다.PersonName로 될 재산SelectedValue.

Style 를 ListBox의 ControlTemplate(목록 상자) ControlTemplate(제어 템플릿)는 Style(스타일)입니다.SelectedValuePath사용할 수 없습니다.

SelectedItem 동안 편한, 전를반니다합환을 합니다.Person현재 선택된 개체입니다.

(여기 TreeView를 사용한 MSDN의 추가 예가 있습니다.)

업데이트:@Joe가 지적했듯이 DisplayMemberPath 속성은 Selected* 속성과 관련이 없습니다.올바른 설명은 다음과 같습니다.

은 이러한값다구별니다됩과음은▁다▁from니▁note▁distinct구됩▁values별▁these▁that다와 구별된다는 점에 유의하십시오.DisplayMemberPath됨) 은 (ItemsControl과 유사합니다.)SelectedValuePath스타일/키워드가 없는 경우 항목에 바인딩된 개체의 속성을 문자열 표현으로 사용해야 합니다.

SelectedItem그리고.SelectedValueobject.그리고.SelectedValuePath입니다.string.

예를 들어 ListBox 사용:

아래listbox1.SelectedValue문자열 값이 됩니다.

string value = listbox1.SelectedValue;

나에게 주라고 하면,listbox1.SelectedItem그것은 당신에게 전체 물체를 줄 것입니다.

ListItem item = listbox1.SelectedItem;
string value = item.value;

이 질문에 영감을 받아 여기 코드 스니펫과 함께 블로그를 작성했습니다.다음은 블로그에서 발췌한 내용입니다.

선택된Item – Selected Item은 표시될 데이터 소스의 실제 값을 바인딩하는 데 도움이 됩니다.이것은 개체 유형이며 개체 유형에서 파생된 모든 유형을 이 속성으로 바인딩할 수 있습니다.이 경우 콤보 상자에 MVVM 바인딩을 사용하므로 VM에 해당 항목이 선택되었음을 알리는 데 사용할 수 있는 속성입니다.

SelectedValue 및 SelectedValuePath – 콤보 상자에 대해 가장 혼란스럽고 잘못 해석된 두 가지 속성입니다.그러나 이러한 속성은 이미 생성된 개체의 값으로 콤보 상자를 바인딩할 때 복구됩니다.다음 목록에서 제 마지막 시나리오를 확인하여 부동산에 대한 간단한 아이디어를 얻으십시오.

데이터를 저장하기 위해 수집을 사용하는 모든 컨트롤에는 선택된 값과 선택된 값이 있습니다.항목 속성.이러한 컨트롤의 예로는 ListBox, Droplet, RadioButtonList, CheckBoxList 등이 있습니다.

문자 그대로 선택한 항목의 텍스트를 검색하려는 경우 보다 구체적으로 다음과 같이 쓸 수 있습니다.

ListBox1.SelectedItem.Text;

값이 이전에 설정된 경우 ListBox1은 SelectedValue 속성을 사용하여 텍스트를 반환할 수도 있습니다.하지만 위가 텍스트를 얻는 더 효과적인 방법입니다.

이제, 그 값은 사용자가 볼 수 없는 것이지만 주로 데이터베이스에 저장하는 데 사용됩니다.ListBox1의 텍스트는 삽입하지 않지만 삽입할 수는 있지만 선택한 항목의 값을 삽입하곤 했습니다.우리가 사용할 수 있는 가치를 얻기 위해

ListBox1.SelectedValue

원천

언급URL : https://stackoverflow.com/questions/4902039/difference-between-selecteditem-selectedvalue-and-selectedvaluepath

반응형