1

私は、WPFユーザーコントロールのDataContextプロパティ(DataTableのバインド)を介した非常に単純なDatagridポピュレーションに夢中です。ユーザーコントロールプロジェクトからWPFWindowsプロジェクトにコードを転送すると、正常に機能します。何が起こるのですか?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 に答える