新手到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派生”
和
“争论名称缺失”
请帮忙:/
答案 0 :(得分:1)
您的绑定表达式写错了。
Width="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}},
Converter={StaticResource ResourceMonitorWidthScalingConverter}}"
使用转换器是为MVVM执行此操作的推荐方法之一。但是,如果您不介意代码隐藏,则可以通过处理事件在代码隐藏中执行此操作。但严重的是,使用转换器要容易得多。