繁体   English   中英

WPF添加的代码行未显示 - 显示XAML

[英]WPF Added Line in Code not displayed - XAML displayed

我在代码中添加一个CavnasObject(Size 0,0)一个Line Element。 但它没有显示出来。 所以我在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的值取自代码。

测试后确定我发现你的XAML可能是问题所在。 您的Canvas是在DataGrid后面的Visual Tree中创建的,因此任何Line都将显示在DataGrid后面。 而且由于你使用StackPanel作为根元素,我不确定你的Line会在哪里结束。 要解决此问题,请将XAML重写为类似于此的内容:

<Grid Grid.Column="1">
  <DataGrid/>
  <Canvas x:Name="lineCanvas"/>
</Grid>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM