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
변수로 무언가를 할 필요가 가정,하지만거야? 그리고 왜 기본 제공 프로젝트 템플릿이이 경우를 처리하지 않습니까?
그래서 나는 'Visibility = {someBool, Binary = Binary, Boolean = TrueToVisibilityConverter} 바인딩을 생성 할 때 ConverterParam = Invert}'와 같이 "Invert"를 전달합니다. 끈? 나는 그것이 특별한 무엇인가라고 생각했다. –