如何将控件作为参数传递给委托

发布于 2024-12-11 02:12:09 字数 689 浏览 0 评论 0原文

我需要为在后面的代码中创建的 ComboBox 设置 ComboBoxItem 的样式。到目前为止,这是我的代码,

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

请有人帮助我指出我做错了什么?

非常感谢

I am needing to style a ComboBoxItem for a ComboBox that is being created in code behind. Here's my code so far

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;
}

I am getting the following errors

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

Please can someone help me in pointing as to what I am doing wrong?

Many Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怀念你的温柔 2024-12-18 02:12:09

尝试使用以下任一方法:

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);

Try using either of these:

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);
救赎№ 2024-12-18 02:12:09

StyleComboBoxItem()“返回”void,因此通过使用ref StyleComboBoxItem(...),您实际上是在尝试创建对 void 的引用。

您可以:

  • 在单独的行上设置 ComboBox 的样式,然后将样式化的 ComboBox 提供给委托
  • let StyleComboBoxItem() 返回它设置样式的 ComboBox,因此您仍然可以内联使用它

不需要 ref 。

StyleComboBoxItem() "returns" void, so by using ref StyleComboBoxItem(...) you're actually trying to create a reference to void.

You could either:

  • style the ComboBox on a separate line, and then supply the styled ComboBox to the delegate
  • let StyleComboBoxItem() return the ComboBox it styled, so you can still use it inline

The ref is not needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文