0

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変数で何かをする必要があると思いますが、何ですか?組み込みのプロジェクト テンプレートがこのケースを処理しないのはなぜですか?

4

1 に答える 1

1

コンバーター パラメーターはオプションの追加パラメーターであり、XAML コンシューマーがコンバーターに渡して、変換のコンテキスト固有の詳細を指定します。

このパラメーターがどのように機能するかを正確に指定する (およびパラメーターを使用してロジックを実装する) のは、コンバーターの作成者であるあなた次第です。Object^基本的に、パラメーターを aにキャストしてから、それを「反転」と比較する必要がありますString^(その後、Convert 関数の動作を変更して、それに応じて動作させます)。

詳細については、このブログ投稿をご覧ください。それはWPFに関するものですが、概念は同じです: http://zamjad.wordpress.com/2010/01/08/passing-parameters-to-value-converter/

于 2012-10-30T18:01:11.677 に答える