gpt4 book ai didi

c# - WPF 在代码中添加的行未显示 - 显示 XAML

转载 作者:行者123 更新时间:2023-11-30 17:59:11 25 4
gpt4 key购买 nike

我在代码中向 CavnasObject (Size 0, 0) 添加了一个 Line 元素。但它没有显示。所以我在 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>#
....
...

如果你是自己为什么Grid的Height=0。我正在用线连接数据网格的数据单元。为了放置线条,我使用了一个非常小的 Canvas 对象,我只是在 Canvas 外显示线条。

所以有没有人知道哪里出了问题。 XAML 的值取自代码。

最佳答案

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

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

关于c# - WPF 在代码中添加的行未显示 - 显示 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com