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

converter 매개 변수는 컨텍스트 관련 세부 정보를 지정하기 위해 XAML 소비자가 변환기에 전달하는 선택적 선택적 매개 변수입니다.

변환기의 작성자는이 매개 변수의 작동 방식을 지정하고 매개 변수를 사용하여 논리를 구현해야합니다. 기본적으로 Object^ 매개 변수를 String^으로 캐스팅 한 다음이를 "반전"과 비교 한 다음 적절하게 동작하도록 변환 함수의 동작을 변경해야합니다.

블로그 게시물에 대한 자세한 정보가 있습니다. 그것은 WPF에 대한 개념이지만 같습니다 : http://zamjad.wordpress.com/2010/01/08/passing-parameters-to-value-converter/

+0

그래서 나는 'Visibility = {someBool, Binary = Binary, Boolean = TrueToVisibilityConverter} 바인딩을 생성 할 때 ConverterParam = Invert}'와 같이 "Invert"를 전달합니다. 끈? 나는 그것이 특별한 무엇인가라고 생각했다. –

관련 문제