0
我在Visual Studio中啓動了一個新的Visual C++項目,並且作爲模板的一部分,我得到了一個BooleanToVisibilityConverter。這工作正常,但它似乎並沒有榮幸ConverterParameter = Invert指定時。如何在C++/Cx中使用ConverterParameter?
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
變量,但什麼?爲什麼內置的項目模板不能處理這種情況?
所以當我創建一個綁定,如'可見性= {綁定someBool,轉換器= {StaticResource BooleanToVisibilityConverter},ConverterParam = Invert}',「Invert」一個字符串?我曾以爲這是特別的東西。 –