2017-04-13 3 views
1

사용자 정의 컨트롤을 다른 창에서 사용할 때 항목 목록을 전달할 WPF에 사용자 정의 컨트롤이 있습니다. 사용자 정의 컨트롤에는 ComboBox와 레이블이 포함되어 있으며 몇 가지 중요한 기능이 있습니다.). 내 페이지에 하나의 컨트롤이있는 경우이 작동합니다.하지만 두 가지가 내 사용자 컨트롤에서 나열된 값을 얻을, 아마도 DependencyProperty 정적 있기 때문에. 종속성 속성을 등록 할 때 오류가 발생하므로 정적을 제거 할 수 없습니다. 다음은 WPF 종속성 속성 여러 값을 표시하는 ObservableCollection

public static readonly DependencyProperty ComboBoxValuesProperty = 
    DependencyProperty.Register("ComboBoxValues", typeof(ObservableCollection<ComboBoxValue>), typeof(SystemConfigComboBox), 
    new PropertyMetadata(new ObservableCollection<ComboBoxValue>())); 

public ObservableCollection<ComboBoxValue> ComboBoxValues 
{ 
    get { return GetValue(ComboBoxValuesProperty) as ObservableCollection<ComboBoxValue>; } 
    set { SetValue(ComboBoxValuesProperty, value); } 
} 

<customEditors:SystemConfigComboBox SystemConfigEntry="Entry1" ComboBoxLabel="Combo 1" ComboBoxWidth="300"> 
    <customEditors:SystemConfigComboBox.ComboBoxValues> 
     <customEditors:ComboBoxValue DisplayValue="Value1" ActualValue="VALUE1" /> 
    </customEditors:SystemConfigComboBox.ComboBoxValues> 
</customEditors:SystemConfigComboBox> 
<customEditors:SystemConfigComboBox SystemConfigEntry="Entry2" ComboBoxLabel="Combo 2" ComboBoxWidth="300"> 
    <customEditors:SystemConfigComboBox.ComboBoxValues> 
     <customEditors:ComboBoxValue DisplayValue="Value2" ActualValue="VALUE2" /> 
    </customEditors:SystemConfigComboBox.ComboBoxValues> 
</customEditors:SystemConfigComboBox> 

및 단지 정보 ComboBoxValue 클래스를 값 1과 값 2

을 포함 모두 사용자 컨트롤의 선택 상자를 보여줍니다 -

public class ComboBoxValue : FrameworkElement 
{ 
    public static readonly DependencyProperty DisplayValueProperty = 
     DependencyProperty.Register("DisplayValue", typeof(string), typeof(ComboBoxValue)); 

    public static readonly DependencyProperty ActualValueProperty = 
     DependencyProperty.Register("ActualValue", typeof(string), typeof(ComboBoxValue)); 

    public string DisplayValue 
    { 
     get { return (string)GetValue(DisplayValueProperty); } 
     set { SetValue(NameProperty, value); } 
    } 

    public string ActualValue 
    { 
     get { return (string)GetValue(ActualValueProperty); } 
     set { SetValue(ActualValueProperty, value); } 
    } 

} 

답변