0

ここでxamlの初心者。皆さんに質問があります。

「ResourceMonitor」と呼ばれる UserControl があり、その周囲のタスク バーがスケーリングされる (既に作成およびテストされている) ときに、UserControl の ActualWidth が ActualHeight の 1.5 倍にスケーリングされることを確認しようとしています (物事を維持するため)。スケーリング時に一貫性があります)。

RelativeSource を使用して (ResourceMonitor UserControl の) ActualHeight のサイズを取得し、それをパラメーターとしてコンバーターに渡し、幅に割り当てようとしています。これを行うためのより良い/より簡単な方法はありますか?

<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,2,0">
    <rm:ResourceMonitor Margin="0,0,4,0" 
                    ShowMemoryTrace="True" 
                    MemoryTraceColor="#FF3399FF"
                    Width="{Binding Path = {Path=ActualHeight, RelativeSource={RelativeSource Self}}, Converter={StaticResource ResourceMonitorWidthScalingConverter}}">
    </rm:ResourceMonitor>
    <Viewbox>
        <StackPanel  Orientation="Horizontal">
            <local:ServerStatus DataContext="{Binding ServerStatusViewModel}"/>
        </StackPanel>
    </Viewbox>
</StackPanel>

ここでいくつかのエラーが発生します。1 つは、「タイプ パスはマークアップ拡張機能のように使用されていますが、MarkupExtension から派生していません」というものです。

「引数名がありません」

助けてください :/

4

1 に答える 1

1

あなたのバインディング式は間違って書かれています。

Width="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}},
                Converter={StaticResource ResourceMonitorWidthScalingConverter}}"

コンバーターの使用は、MVVM で推奨される方法の 1 つです。ただし、コード ビハインドを気にしない場合は、イベントを処理することでコード ビハインドで実行できます。しかし、真剣に、コンバーターを使用する方がはるかに簡単です。

于 2016-07-05T01:32:19.703 に答える