如何获取ActualHeight的值,将其传递给转换器,该转换器将结果提供给ActualWidth

时间:2016-07-04 22:20:07

标签: wpf xaml mvvm actualwidth actualheight

新手到xaml这里。我有一个问题要问你们。

我有一个名为“ResourceMonitor”的UserControl,我试图确保当它的周围任务栏被缩放(已经编写并测试)时,我的UserControl的ActualWidth被缩放为ActualHeight的1倍半(如缩放时保持一致)。

我正在尝试使用RelativeSource来检索ActualHeight(ResourceMonitor UserControl)的大小,然后将其作为参数传递给我的转换器,然后将其分配给width。是否有更好/更简单的方法来做到这一点?

<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>

我在这里遇到一些错误,一个是说“类型路径被用作标记扩展但不是从MarkupExtension派生”

“争论名称缺失”

请帮忙:/

1 个答案:

答案 0 :(得分:1)

您的绑定表达式写错了。

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

使用转换器是为MVVM执行此操作的推荐方法之一。但是,如果您不介意代码隐藏,则可以通过处理事件在代码隐藏中执行此操作。但严重的是,使用转换器要容易得多。