我在 Visual Studio 中启动了一个新的 Visual C++ 项目,作为模板的一部分,我得到了一个 BooleanToVisibilityConverter。这工作正常,但它似乎不尊重 ConverterParameter=Invert 指定时。
XAML:
<UserControl.Resources>
<local:IntToVisibilityConverter x:Name="IntToVisibilityConverter" />
<common:BooleanToVisibilityConverter x:Name="BoolToVisibilityConverter" />
</UserControl.Resources>
...
<Image Width="24" Height="24" Source="/Assets/DisclosureTriangleDown.png" Visibility="{Binding Disclosed, Converter={StaticResource BoolToVisibilityConverter}}" />
<Image Width="24" Height="24" Source="/Assets/DisclosureTriangleRight.png" Visibility="{Binding Disclosed, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=Invert}" />
C++:
Object^ BooleanToVisibilityConverter::Convert(Object^ value, TypeName targetType, Object^ parameter, String^ language)
{
(void) targetType; // Unused parameter
(void) parameter; // Unused parameter
(void) language; // Unused parameter
auto boxedBool = dynamic_cast<Box<bool>^>(value);
auto boolValue = (boxedBool != nullptr && boxedBool->Value);
return (boolValue ? Visibility::Visible : Visibility::Collapsed);
}
Object^ BooleanToVisibilityConverter::ConvertBack(Object^ value, TypeName targetType, Object^ parameter, String^ language)
{
(void) targetType; // Unused parameter
(void) parameter; // Unused parameter
(void) language; // Unused parameter
auto visibility = dynamic_cast<Box<Visibility>^>(value);
return (visibility != nullptr && visibility->Value == Visibility::Visible);
}
我假设我需要对Object^ parameter
变量做一些事情,但是什么?为什么内置项目模板不处理这种情况?