0

xaml 的新手在这里。我有一个问题要问大家。

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

我正在尝试使用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>

我在这里遇到了几个错误,一个是说“类型路径像标记扩展一样使用,但不是从 MarkupExtension 派生的”

“参数名称丢失”

请帮忙 :/

4

1 回答 1

1

您的绑定表达式写错了。

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

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

于 2016-07-05T01:32:19.703 回答