chaning DependencyProperty

时间:2018-02-26 09:48:09

标签: c# wpf dependency-properties

我在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>

0 个答案:

没有答案