如何为模板提供值

本文关键字: | 更新日期: 2023-09-27 18:34:18

我正在使用XCeed Extended Toolkit Plus。特别是图表。但是,我认为问题不需要专门针对此控件,而是有关如何在控件和模板之间传递或共享值。

图表位于 WPF 用户控件中,但值在代码隐藏中设置。没有数据绑定或MVVM,更多的是"winforms"方法。

图表有效,但我想改变条形图(在条形图中(的显示方式。

根据文档,我可以使用模板

<xctk:Chart >
            <xctk:Chart.Areas>
                <xctk:Area x:Name="MyGraphArea">
                    <xctk:Area.XAxis>
                        <xctk:Axis Title="Date" 
                                   />
                    </xctk:Area.XAxis>
                    <xctk:Area.YAxis>
                        <xctk:Axis Title="Position"  
                                   />
                    </xctk:Area.YAxis>
                    <xctk:Area.Series>
                        <xctk:Series Template="{StaticResource SeriesTemplate}" >
                            <!--done in code behind-->
                        </xctk:Series>
                    </xctk:Area.Series>
                </xctk:Area>
            </xctk:Chart.Areas>
        </xctk:Chart>

在同一个 XAML 页面上,我的Grid.Resources中也有 .这就是问题所在

 <DataTemplate x:Key="SeriesTemplate">
            <Button x:Name="Bar">
                <StackPanel>
                    <DockPanel>
                        <TextBlock x:Name="seriesTemplateDate" Text="How To I Bind"></TextBlock>
                    </DockPanel>
                    <DockPanel>
                        <TextBlock x:Name="seriesTemplatePosition" Text="What Am I binding too"></TextBlock>
                    </DockPanel>
                </StackPanel>
            </Button>
        </DataTemplate>

在我的代码隐藏中(显示构造函数(

    public GraphView(IEnumerable<DataPoint> graphData, string title)
    {
        InitializeComponent();
        var series = new Series();
        foreach (var dataPoint in graphData)
        {
            series.DataPoints.Add(dataPoint);
        }
        series.Title = title;
        this.MyGraphArea.Series.Add(series);
    }

所以,数据模板是我遇到问题的地方。我不知道输入什么 for text

我认为我不能按名称添加值并在后面的代码中设置它,因为它在每次迭代时都会被调用(取决于系列中有多少项(。

在我的脑海中,唯一的方法是,如果DataTemplate可以从调用控件继承一些方法。在这个阶段,我的谷歌结果没有提供任何有用的东西,我想我让自己变得糊涂了!

如何为模板提供值

我必须猜测,因为我不知道XCeed Extended Toolkit Plus。话虽如此,数据模板的数据上下文通常设置为数据对象。在这种情况下,这应该是系列对象。这意味着您可以直接绑定到系列对象上的属性,如 Title 属性。也许它还具有日期和位置属性?!

series.Title = title;
series.Date = date;
series.Position = position;
<TextBlock x:Name="seriesTemplateTitle" Text="{Binding Title}"></TextBlock>
<TextBlock x:Name="seriesTemplateDate" Text="{Binding Date}"></TextBlock>
<TextBlock x:Name="seriesTemplatePosition" Text="{Binding Position}"></TextBlock>

祝你好运!

相关文章:
  • 没有找到相关文章