在WPF用户控件中填充Datagrid

时间:2012-12-09 12:53:55

标签: wpf datagrid user-controls

在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;

...

谢谢,

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

    datGrdFalhas.ItemsSource = null;

而不是

    datGrdFalhas.DataContext = null;

清除WPF中的{Binding}动作。

现在工作正常。非常感谢您的关注和答案,并对给您带来的不便表示歉意。