在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;
...
谢谢,
答案 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}动作。
现在工作正常。非常感谢您的关注和答案,并对给您带来的不便表示歉意。