【发布时间】:2019-11-12 22:04:31
【问题描述】:
在 Expression blend 中,我有一个进度条和两个文本块。我将第一个文本块绑定到 Value 属性。我需要将第二个文本块绑定到最大值属性以读取剩余的数量以填充进度条。我怎样才能在 XAML 中做到这一点?
因为我想在修改progressBar值时看到设计器视图的变化
这是视图: https://i.imgur.com/yTF1rRl.png
代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="mobSizing.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<ProgressBar x:Name="progressBar" Height="41" Margin="84,77,125,0" VerticalAlignment="Top" Value="66"/>
<TextBlock x:Name="Value" HorizontalAlignment="Left" Height="40" Margin="106,142,0,0" TextWrapping="Wrap" Text="{Binding Value, ElementName=progressBar}" VerticalAlignment="Top" Width="182" Foreground="#FF40B617"/>
<TextBlock x:Name="Left" HorizontalAlignment="Right" Height="40" Margin="0,145,53,0" TextWrapping="Wrap" Text="{Binding Value, ElementName=progressBar}" VerticalAlignment="Top" Width="182" Foreground="#FF8F8F8F"/>
</Grid>
</Window>
【问题讨论】:
-
请说明哪个值用于什么。进度条继承自 rangebase docs.microsoft.com/en-us/dotnet/api/…,因此它具有最小值、最大值和值属性。 “剩余”数量是最大值 - 值。如果这就是您所需要的,那么您需要一个多转换器和多绑定或 ViewModel 来进行计算。
-
是的,我想将剩余数量(最大值)绑定到“left”文本块。
-
不是您要的,但是您进行布局的方式是个坏主意。不要在设计器周围拖放控件。编辑代码中的值并使用堆栈面板、行和列来排列控件。永远不要使用固定的大边距,因为它们不能流动,而且您的布局只能在与您自己的设置相同的显示器上工作。当您分发产品时,这有点问题。
-
这不是布局,只是用来说明我的问题的屏幕截图。
-
在视图模型中为进度条和要绑定的文本块设置属性,而不是让控件尝试相互绑定不是更好吗?
标签: wpf data-binding expression-blend-4