【问题标题】:Populate Datagrid in WPF User Control在 WPF 用户控件中填充 Datagrid
【发布时间】:2012-12-09 12:53:55
【问题描述】:

我很喜欢通过 WPF 用户控件中的 DataContext 属性(绑定 DataTable)实现非常简单的 Datagrid 填充。我将代码从用户控制项目传输到 WPF Windows 项目,它工作正常。发生什么了?下面是在 WPF Window 中有效但在 WPF User Control 中无效的代码:

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;

...

谢谢,

【问题讨论】:

  • 它对我来说很好用。直接在一个窗口中和在窗口中的 UserControl 中。也许你的问题不相关?怎么放userControl?
  • 你确定这段代码在 UserControl 中运行吗?
  • 感谢您的回答。用户控件几乎是一个 Windows 项目,包含图表、组合、文本框等。是的,我在 WPF Windows 项目中运行此代码,该项目成功地容纳了用户控件。我在网上搜索并找到了一些关于绑定的用户控制项目配置,但没有任何效果。在帖子中遵循初始 WPF 声明:
  • 我可以在 8 小时内发布,但用户控件还有其他绑定命令成功(列表框、图表和组合框)。

标签: wpf datagrid user-controls


【解决方案1】:
<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>

【讨论】:

  • 感谢您的回答。我这样做了。在下一步中,datacontext 数据网格与数据表绑定(可在手表或鼠标悬停时观察),但不显示数据。很奇怪...再次感谢。
【解决方案2】:

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

    datGrdFalhas.ItemsSource = null;

而不是

    datGrdFalhas.DataContext = null;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2014-07-21
    • 2011-09-24
    • 1970-01-01
    相关资源
    最近更新 更多