3

コード内の線要素をCavnasObject(サイズ0、0)に追加しています。ただし、表示されません。そこで、同じプロパティを持つxamlに同じ行オブジェクトを追加しました。XAMLでは表示されますが、C#では表示されません。これがC#での私のコードです:

Line line = new Line()
{
    X1 = points[0].X,
    Y1 = points[0].Y,
    X2 = points[1].X,
    Y2 = points[1].Y,
    Stroke = new SolidColorBrush(Colors.Red),
    StrokeThickness = 4,
    Visibility = System.Windows.Visibility.Visible
};
lineCanvas.Children.Add(line);

は表示されていません。そして、ここに示されている行があります:

<StackPanel Grid.Column="1">
    <Grid Height="0">
        <Canvas Name="lineCanvas">
            <Line X1="1" X2="240" Y1="33" Y2="33" StrokeThickness="4" Stroke="Red"/>
        </Canvas>
    </Grid>
    <DataGrid Name="dataGrid" Grid.Column="0" ItemsSource="{Binding ViewMap}" CanUserReorderColumns="False" 
              CanUserSortColumns="False" AutoGenerateColumns="False" AllowDrop="True"
              DragEnter="dataGrid_DragEnter" Drop="dataGrid_Drop" SelectionUnit="FullRow" 
              HeadersVisibility="Column" IsReadOnly="True" Panel.ZIndex="0" MouseDown="dataGrid_MouseDown">
        <DataGrid.CellStyle>#
....
...

あなた自身なら、なぜグリッドの高さ=0なのか。データグリッドのデータセルを線で接続しています。そして、線に配置するために、私は非常に小さなキャンバスオブジェクトを使用しており、キャンバスから線を表示しているだけです。

だから、誰もが何が悪いのか考えていますか?XAMLの値はコードから取得されます。

4

1 に答える 1

1

テストした後、XAML が問題である可能性があることがわかりました。Canvas は DataGrid の背後にあるビジュアル ツリーに作成されるため、DataGrid の背後に任意の Line が表示されます。StackPanel をルート要素として使用しているため、 Line がどこに到達するかわかりません。この問題を修正するには、XAML を次のように書き換えます。

<Grid Grid.Column="1">
  <DataGrid/>
  <Canvas x:Name="lineCanvas"/>
</Grid>
于 2012-07-10T14:57:12.120 に答える