如何为模板提供值
本文关键字: | 更新日期: 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>
祝你好运!