我正在使用XCeed Extended Toolkit Plus。特别是图表。但是,我不认为问题需要专门针对此控件,更多关于如何在控件和模板之间传递或共享值。
图表位于WPF UserControl中,但值在后面的代码中设置。没有数据绑定或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);
}
因此,DataTemplate是我遇到问题的地方。我不知道输入for text
值
我不认为我可以按名称添加值并将其设置在后面的代码中,因为它会在每次迭代时调用(取决于系列中有多少项)。
在我看来,唯一的方法是,如果DataTemplate可以从调用控件继承一些方法。在这个阶段,我的谷歌搜索结果没有提供任何有用的东西,我想我自己也搞糊涂了!
答案 0 :(得分:0)
我必须猜测,因为我不知道XCeed Extended Toolkit Plus。话虽如此,Datatemplate的Datacontext通常设置为数据对象。在这种情况下,应该是系列对象。这意味着您可以直接绑定到系列对象上的属性,如Title-property。也许它还有一个Date和Position属性?!
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>
祝你好运!