如何在 WinUI3 的 C++ 中以编程方式设置堆栈面板的边框颜色?

How can I set a stack panel's border color programmatically in C++ in WinUI3?

我正在使用 C++ 中的 WinUI 3 开发一个项目,我想根据某些条件更改 XAML 控件(例如堆栈面板)的边框颜色。我试过在网上搜索它,但大多数答案都是用 c# 写的,有些是用 C++ 写的,我试过了,但没有成功。

例如:(“StackPanel”在xaml中定义)

StackPanel().BorderBrush(SolidColorBrush(ColorHelper::FromArgb(255, 255, 255, 255)));

然后会出现错误:

no instance of overloaded function matches the argument list
argument types are: (winrt::Windows::UI::Xaml::Media::SolidColorBrush)
object type is: winrt::Microsoft::UI::Xaml::Controls::StackPanel

还有一个我在 .cpp 文件中试过的:

StackPanel().BorderBrushProperty(SolidColorBrush(Colors::Black()));

错误是:

too many arguments in function call.

为什么会出现这些错误?

谁能帮我解决这个问题?或者有什么建议吗?
示例代码会很棒!

PS : 我对 WinUI 3 还是很陌生,尤其是在 C++ 方面(对 C++ 的研究并不多material)

如有任何帮助,我将不胜感激。

根据我所看到的实际错误(尽我所能复制您正在做的事情)是

Severity    Code    Description Project File    Line    Suppression State
Error   C2664   'void Windows::UI::Xaml::Controls::StackPanel::BorderBrush::set(Windows::UI::Xaml::Media::Brush ^)': cannot convert argument 1 from 'Windows::UI::Xaml::Media::SolidColorBrush' to 'Windows::UI::Xaml::Media::Brush ^'  App1    c:\repos\App1\MainPage.xaml.cpp 29  

如果你像这样创建画笔auto brush = ref new SolidColorBrush(...);
并像这样 stackpanel->BorderBrush = brush;
将其传递给堆栈面板 您的错误应该会消失。

很明显,您获取堆栈面板的方式可能与我的不同,但关键是您应该能够将其设置为该值,只要您拥有正确形式的值即可 ref new 对象在这种情况下,看起来。