我在WPF中有2个控件。 “主控件”和“图表控件”,它根据DataSet绘制条形图。
我的主控件初始化图表控件并将绘图所需的DatSet绑定到其DependencyProperty。由于我使用的DataSet有很多表,而我的图表只需要一个表,我最近创建了一个新的DataTable属性,并将我的DataSet中的右表转发给它。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="3"/>
<RowDefinition Height="*"/>
<RowDefinition Height="3"/>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid Grid.Row="2" Background="#f0f0f0">
<c:ChartControl TableData="{Binding ChartTable, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Height="Auto" Width="Auto" />
</Grid>
[...]
</Grid>
我还将ChartControl中的DependencyProperty从DataSet更改为DataTable。触发onDataPropertyChanged事件后,将在最后调用包含以下代码的方法:
if (TableData_ != null)
{
// previously DataTable ChartTable = dsData_.Tables[ChartTable].Copy();
Grid gdChart = new Grid();
gdChart.Width = MainGrid.ActualWidth;
gdChart.Height = MainGrid.ActualHeight;
foreach (DataRow row in TableData_.Rows)
{
// draw Chart
}
MainGrid.Child = gdChart;
}
这就是我改变的一切。它之前有效,DependencyProperty具有正确的价值,但出于我所知的原因,我的MainGrid的大小现在总是0 。我没有更改或移动我的代码中的单行,而是将两个控件中的属性从DataSet更改为DataTable并删除我之前在ChartControl中复制的表。另一个DependencyProperty如何影响大小?
我的ChartControl看起来像这样
<UserControl [...]>
d:DesignHeight="300" d:DesignWidth="300" >
<Viewbox x:Name="MainGrid" Height="Auto" Width="Auto" />
</UserControl>