2

カスタム コントロールの表示に問題があります。ページが読み込まれると表示されませんが、ウィンドウのサイズを変更するとすぐに表示されます。

私が使用しているコードは次のとおりです。

<UserControl x:Class="KinectBewegingsanalyse.View.UserAnalysisChartView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:c="http://schemas.amcharts.com/stock/wpf/2009/xaml"
         mc:Ignorable="d"
         d:DesignWidth="800" d:DesignHeight="600">

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

<Grid>
    <c:StockChart Name="test" Visibility="Visible" PeriodSelectorVisibility="Hidden" IsEquallySpaced="False" Margin="12">
        <c:StockChart.Charts>
            <c:Chart PlotAreaBorderBrush="{StaticResource TassBlue}" PlotAreaBorderThickness="1">
                <c:Chart.DateTimeAxis>
                    <c:DateTimeAxis ValuesEnabled="True" Stroke="Transparent" StrokeThickness="0" />
                </c:Chart.DateTimeAxis>
                <c:Chart.LeftValueAxis>
                    <c:ValueAxis ValuesFormatString="0°" Stroke="Transparent" StrokeThickness="0" />
                </c:Chart.LeftValueAxis>
                <c:Chart.Graphs>
                    <c:Graph GraphType="Line" BulletType="RoundOutline" BulletSize="8" LegendItemType="Value" LegendValueLabelText="Gemeten waarde: " LegendValueFormatString="0°" LegendPeriodItemType="Value" />
                </c:Chart.Graphs>

                <c:Chart.Legend>
                    <c:Legend PositiveValueForeground="Black" NegativeValueForeground="Black" IsDateVisible="True" HideDateOnPeriod="False" />
                </c:Chart.Legend>
            </c:Chart>
        </c:StockChart.Charts>

        <c:StockChart.DataSets>
            <c:DataSet Brush="{StaticResource TassMagenta}" ItemsSource="{Binding PerformedAnalysis}" DateMemberPath="Date" ValueMemberPath="Angle" />
        </c:StockChart.DataSets>
    </c:StockChart>
</Grid>

私が使用している customc コントロールは、amCharts ( amCharts website ) の StockChart です。

前もって感謝します!

ジェローン・コルシウス

更新 1: したがって、カスタム コントロールを含む Grid の幅と高さは「NaN」です。グリッドの幅と高さを設定しても何も変わりません。

更新 2: 次のいずれかを実行して、グラフの更新をトリガーしようとしました。

  • base.InvalidateVisual();
  • base.UpdateLayout();
  • grid.UpdateLayout();
  • grid.InvalidateVisual();
  • Chart.Focus();
  • Chart.UpdateLayout();
  • Chart.InvalidateVisual();
  • Chart.Refresh();

すべて結果なし。

更新 3:ボタン クリック イベント を実行Chart.Refresh();すると、グラフが表示されます。

4

3 に答える 3

2

チャートに次のイベントを追加してみてください: Loaded="Chart_Loaded"、イベント ハンドラーに次のルールを追加します: Chart.Refresh();

幸運を!

于 2012-04-05T14:02:50.627 に答える
2

snoopを使用してビジュアル ツリーを検査し、ツリーが壊れている場所を確認します。

于 2012-04-05T14:18:02.287 に答える
0

カスタム コントロールまたはそれを含むものによって minwidth がゼロに設定されていないことを確認してください。スタジオまたはブレンドがデフォルトとしてminwidth = 0を追加したとき、Silverlightでまったく同じことが起こりました。

于 2012-04-05T14:18:08.697 に答える