我用一个网格和一些矩形构建一个图表,就像这篇文章: Drawing a chart in WPF C# design questions
现在,我将此图表保存到XAML文件中,以便以后由另一个程序填充。
在此图表中,我需要绑定三个值: 1.标签 2. MaxHeight-高度(每个栏) 3.高度
我的问题是,我不知道如何正确绑定它才能在另一个应用程序中使用它。
另一个应用程序可以给我一个带有值和标签的列表或数组,但是我不知道如何将未知值绑定到矩形。
在下面的代码中,我绑定了“ ChartLabel”,但我不仅需要所有图表标签,还需要绑定所有标签。 现在,当我创建图表时,我不会再拥有多少柱。
<Grid ShowGridLines="True" Background="#FFF5F5DC" Width="Auto" Margin="5,5,5,5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Rectangle Fill="#FF0000FF" Grid.Column="{Binding Path=Test6_Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Path=ChartLabel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BorderBrush="#00FFFFFF" Background="#00FFFFFF" HorizontalAlignment="Center" Grid.Column="5" Grid.Row="10" />
<Rectangle Fill="#FF0000FF" Grid.Column="{Binding Path=Test7_Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Path=ChartLabel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BorderBrush="#00FFFFFF" Background="#00FFFFFF" HorizontalAlignment="Center" Grid.Column="6" Grid.Row="10" />
<Rectangle Fill="#FF0000FF" Grid.Column="{Binding Path=Test8_Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Path=ChartLabel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BorderBrush="#00FFFFFF" Background="#00FFFFFF" HorizontalAlignment="Center" Grid.Column="7" Grid.Row="10" />
<Rectangle Fill="#FF0000FF" Grid.Column="{Binding Path=Test9_Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Path=ChartLabel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BorderBrush="#00FFFFFF" Background="#00FFFFFF" HorizontalAlignment="Center" Grid.Column="8" Grid.Row="10" />
<Rectangle Fill="#FF0000FF" Grid.Column="{Binding Path=Test10_Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Path=ChartLabel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" BorderBrush="#00FFFFFF" Background="#00FFFFFF" HorizontalAlignment="Center" Grid.Column="9" Grid.Row="10" />
</Grid>
答案 0 :(得分:0)
我不确定我是否遵循您对哪个部分有问题的描述。 您将有一个列表。 您要使用该字符串作为标签,并使用数字作为高度。 如果进行迭代,则可以找到最大值,从而计算某种比例因子,因此,最大值的一半最终将占图表高度的一半。 我要做这样的系列的方式是使用itemscontrol。将可观察的集合绑定到itemssource。一个项目控件有一个堆栈面板,其内容进入其中。使方向水平,并定义一个项目模板。那将有一个用于标签的文本块(可以旋转)和一个矩形,其高度与缩放值绑定。
我写的地形可视化工具大致是这样工作的。 没有标签-因此,这是给您的想法,而不是剪切和粘贴。
<ListBox ItemsSource="{Binding TerrainPointList}"
..
>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True"
Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
...
一个列表框包含滚动条和selecteditem。我在我的产品中使用了selecteditem,这对您可能有用也可能没有用。