1

我对通过 WPF 用户控件中的 DataContext 属性(绑定 DataTable)进行非常简单的 Datagrid 填充感到疯狂。我将代码从用户控制项目传输到 WPF Windows 项目,它工作正常。发生什么了?下面是在 WPF 窗口中工作但在 WPF 用户控件中不起作用的代码:

XAML:

<DataGrid AutoGenerateColumns="true" ItemsSource="{Binding}" Height="282" HorizontalAlignment="Left" Margin="6,6,0,0" Name="datGrdFalhas" VerticalAlignment="Top" Width="494" FontWeight="Normal" IsReadOnly="True" FontSize="14" TabIndex="211" />

代码: ...

        DataTable datTblFalhas = new DataTable();
        datTblFalhas.Columns.Add("Alarme",
                                 typeof(string)
                                );
        datTblFalhas.Columns.Add("Momento",
                                 typeof(string)
                                );

        DataRow datRowAlarme = datTblFalhas.NewRow();
        datRowAlarme[0] = "a";
        datRowAlarme[1] = "b";
        datTblFalhas.Rows.Add(datRowAlarme);

        datGrdFalhas.DataContext = datTblFalhas;

...

谢谢,

4

2 回答 2

0
<UserControl x:Class="ProMaqWPFLib.UsrCtrGestaoProducao" Name="usrCtrGestao"
         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:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
         xmlns:comCtrls="clr-namespace:ComControlsLib;assembly=ComControlsLib"
         mc:Ignorable="d" 
         d:DesignHeight="388" d:DesignWidth="1339" Loaded="usrCtrGestao_Loaded">
<UserControl.Resources>
    <Visibility x:Key="VisibilidadeSerieEntradaDispParada"/>
    <Visibility x:Key="VisibilidadeSerieSaidaEficiencia"/>
    <Visibility x:Key="VisibilidadeSerieRefugoQualidade"/>
    <Visibility x:Key="VisibilidadeSerieOEE"/>
    <Visibility x:Key="VisibilidadeSeriePareto"/>
</UserControl.Resources>
<Grid Height="Auto" Name="grid1" Width="Auto">
     ...
</Grid>
</UserControl>
于 2012-12-09T23:18:06.943 回答
0

好吧朋友们,经过太多的测试,我发现了一个非常非常愚蠢的错误:在清理数据网格的方法中(在tabitem show中调用),我输入了命令:

    datGrdFalhas.ItemsSource = null;

并不是

    datGrdFalhas.DataContext = null;

清理 WPF 中编写的 {Binding} 操作。

现在工作正常。非常感谢您的关注和解答,不便之处敬请谅解。

于 2012-12-10T23:50:05.853 回答