繁体   English   中英

在运行时将数据绑定到XAML

[英]Binding data to XAML while runtime

我用一个网格和一些矩形构建了一个图表,就像这篇文章: 在WPF C#设计问题中绘制图表

现在,我将此图表保存到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>

我不确定我是否遵循您对哪个部分有问题的描述。 您将有一个列表。 您要使用该字符串作为标签,并使用数字作为高度。 如果进行迭代,则可以找到最大值,从而计算某种比例因子,因此,最大值的一半最终将占图表高度的一半。 我要做这样的系列的方式是使用itemscontrol。 将可观察的集合绑定到itemssource。 一个项目控件有一个堆栈面板,其内容进入其中。使方向水平,并定义一个项目模板。 那将有一个用于标签的文本块(可以旋转)和一个矩形,其高度绑定到您的缩放值。

我写的地形可视化器大致是这样工作的。 没有标签-因此,这是给您的想法,而不是剪切和粘贴。 在此处输入图片说明

    <ListBox ItemsSource="{Binding TerrainPointList}"
             ..
             >
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel IsItemsHost="True" 
                                        Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

...

列表框包含滚动条和selecteditem。 我在我的产品中使用了selecteditem,这对您可能有用也可能没有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM