사용 가능한 시스템 색상 목록을 표시하는 콤보 상자가 있습니다. 콤보 상자의 각 항목에는 미리보기 사각형과 텍스트 색 이름이 있습니다. 주어진 시간에 나는 한 번에 화면에 콤보 상자가 6 개나 필요할 수 있습니다. 오버 헤드를 줄이기 위해 모든 콤보 상자에서 재사용 할 정적 항목 목록을 만들었습니다. 그것은 작동하지만, 빨리,하지만 지금은 내가 글꼴 속성을 굵게 설정과 같은 다른 콤보 상자의 속성을 변경하면 모든 콤보 상자에 영향을 단지 하나의 속성을 적용합니다.ItemsSource 바인딩을 사용하는 ComboBox가 다른 속성에 영향을줍니다.
내 코드는 모두 코드 뒤에 있습니다.
내가 다시리스트의 선언과 콤보 상자 :
static private List<ListViewItem> _colorItems = null;
ComboBox _comboBoxColorList;
그럼 내 제어를위한 생성자에서 나는리스트의 초기 생성을위한 코드가 콤보 상자가 포함되어
if (_colorItems == null)
{
_colorItems = new List<ListViewItem>();
PropertyInfo[] colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
Dictionary<String, Color> colorDictionary = colorProperties.ToDictionary(p => p.Name, p => (Color)p.GetValue(null, null));
ListViewItem newItem;
foreach (KeyValuePair<String, Color> keyPair in colorDictionary)
{
newItem = CreateListViewItem(keyPair.Key, keyPair.Value);
_colorItems.Add(newItem);
}
}
을 그런 다음
_comboBoxColorList = new ComboBox();
_comboBoxColorList.Height = Constants.ListViewPropertyComboBoxHeight;
_comboBoxColorList.VerticalContentAlignment = VerticalAlignment.Center;
_comboBoxColorList.Background = Brushes.White;
_comboBoxColorList.ItemsSource = _colorItems;
_comboBoxColorList.SelectionChanged += new SelectionChangedEventHandler(comboBoxColorList_SelectionChanged);
Children.Add(_comboBoxColorList);
내가 가진 이벤트 핸들러에 나중에 하나
는 그럼 난 콤보 상자를 만들 _colorItems 것을 정적 everythings가 정상적으로 작동되지 않도록 내가 한 경우
_comboBoxColorList.FontWeight = FontWeights.Bold;
하지만 느린 :이 코드는 굵게 콤보 상자를 설정합니다. _colorItems가 정적 인 경우 매우 빠르지 만 위의 행은 항목 소스를 굵게 표시하는 모든 콤보 상자를 만듭니다.
어떤 통찰력이나 지혜가 좋을 것입니다.
태그는 제목에 속하지 않으므로 그대로 두십시오. –
두 번째 콤보 상자를 만드는 코드를 게시하십시오. 이벤트 처리기와 전체 이벤트 처리기를 연결하는 방법을 게시하십시오. – Paparazzi