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變量,但什麼?爲什麼內置的項目模板不能處理這種情況?

回答

1

轉換器參數是可選的附加參數,XAML使用者將傳遞給轉換器以指定轉換的上下文特定細節。

作爲轉換器的作者,您可以指定該參數的工作方式(並使用參數爲其實現邏輯)。基本上,您需要將Object^參數投射到String^,然後將其與「反轉」進行比較(然後更改Convert功能的行爲以相應地執行)。

此博客文章有更多信息;這是關於WPF,但概念是相同的:http://zamjad.wordpress.com/2010/01/08/passing-parameters-to-value-converter/

+0

所以當我創建一個綁定,如'可見性= {綁定someBool,轉換器= {StaticResource BooleanToVisibilityConverter},ConverterParam = Invert}',「Invert」一個字符串?我曾以爲這是特別的東西。 –

相關問題