Как передать элемент управления в качестве параметра для делегирования - PullRequest
0 голосов
/ 18 октября 2011

Мне нужно стилизовать ComboBoxItem для ComboBox, который создается в коде позади. Вот мой код пока

ComboBox cbo1 = new ComboBox();                
cbo1.IsTextSearchEnabled = true;
cbo1.IsEditable = true;

grid1.Children.Add(cbo1); 

cbo1.Dispatcher.BeginInvoke(new StyleComboBoxItemDelegate(ref StyleComboBoxItem(cbo1), System.Windows.Threading.DispatcherPriority.Background);

public delegate void StyleComboBoxItemDelegate(ComboBox cbo_tostyle);

public void StyleComboBoxItem(ComboBox cbo_tostyle)
{
//code to style the comboboxitem;
}

Я получаю следующие ошибки

1. A ref or out argument must be an assignable variable
2. Method name expected

Может, кто-нибудь поможет мне указать, что я делаю неправильно?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Попробуйте использовать любой из них:

cbo1.Dispatcher.BeginInvoke(
    (Action)(() => StyleComboBoxItem(cbo1)), 
    System.Windows.Threading.DispatcherPriority.Background);

cbo1.Dispatcher.BeginInvoke(
    (Action)(() =>
    {
        //code to style the comboboxitem;
    }),
    System.Windows.Threading.DispatcherPriority.Background);
1 голос
/ 18 октября 2011

StyleComboBoxItem() «возвращает» void, поэтому, используя ref StyleComboBoxItem(...), вы фактически пытаетесь создать ссылку на void.

Вы можете либо:

  • оформить стильComboBox в отдельной строке, а затем предоставить стилизованный ComboBox делегату
  • let StyleComboBoxItem() вернуть ComboBox, который он стилизовал, так что вы все равно можете использовать его встроенным

не требуется.

...