2017-11-10 12 views
0

私は、データを表示するためにinfragisticsとwpfを使用しているアプリケーションを開発しています。 私のコードは、このWPF-観測可能なコレクションを持つXamDatagridをバインドできない

<Grid> 
    <ItemsControl x:Name="MyItemContol" ItemsSource="{Binding ViewSetList}" 
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 

     <ItemsControl.ItemTemplate> 
      <DataTemplate> 

       <igDP:XamDataGrid DataSource="{Binding ViewSetList}" > 
        <igDP:XamDataGrid.FieldLayouts> 
         <igDP:FieldLayout> 
          <igDP:FieldLayout.Fields> 

           <igDP:Field Name="PARAMETER"> 
            <igDP:Field.Settings> 
             <igDP:FieldSettings AllowEdit="False" /> 
            </igDP:Field.Settings> 

           </igDP:Field> 

           <igDP:Field Name="VALUE"> 
            <igDP:Field.Settings> 
             <igDP:FieldSettings AllowEdit="False" /> 
            </igDP:Field.Settings> 
           </igDP:Field> 
           <igDP:Field Name="UNIT"> 
            <igDP:Field.Settings> 
             <igDP:FieldSettings AllowEdit="False" /> 
            </igDP:Field.Settings> 
           </igDP:Field> 
           <igDP:Field Name="INSTANCE"> 
            <igDP:Field.Settings> 
             <igDP:FieldSettings AllowEdit="False" /> 
            </igDP:Field.Settings> 
           </igDP:Field> 

          </igDP:FieldLayout.Fields> 
         </igDP:FieldLayout> 
        </igDP:XamDataGrid.FieldLayouts> 

       </igDP:XamDataGrid> 


      </DataTemplate> 
     </ItemsControl.ItemTemplate> 

    </ItemsControl> 
</Grid> 

のように見えるこのXAMLファイルには次の4つのフィールドパラメータ、値、単位やインスタンスが含まれています。

public partial class MainWindow : Window 
    { 
     private ObservableCollection<Parameters> viewSetList = new 
     ObservableCollection<Parameters>(); 

     public MainWindow() 
     { 
     InitializeComponent(); 

     //Add data to the collection 
     viewSetList.Add(new Parameters() { PARAMETER="abc", INSTANCE="def" , UNIT="hhshhd", VALUE="hahha" }); 


    } 


public class Parameters: INotifyPropertyChanged 
{ 
    private string parameterName = string.Empty; 

    public string PARAMETER 
    { 
     get { return parameterName; } 
     set { parameterName = value; } 
    } 
    private string parameterValue = string.Empty; 

    public string VALUE 
    { 
     get { return parameterValue; } 
     set { parameterValue = value; } 
    } 
    private string parameterUnit = string.Empty; 

    public string UNIT 
    { 
     get { return parameterUnit; } 
     set { parameterUnit = value; } 
    } 
    private string instance = string.Empty; 

    public string INSTANCE 
    { 
     get { return instance; } 
     set { instance = value; } 
    }  

    public event PropertyChangedEventHandler PropertyChanged; 
    private void onPropertyChanged(object sender, string propertyName) 
    { 
     if (this.PropertyChanged != null) 
     { 
      PropertyChanged(sender, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

実行すると、空白の画面しか表示されません。しかし、ItemsSource = "{Binding ViewSetList}"をxamlファイルに含めました。結束が起こっていない理由を教えてもらえますか?

XamDataGridもバインドする必要がありますか?

ヘルプは高く評価されます。

THANKS

+0

ありすぎて、間違ったコードを使用していて、あなたは良い[MCVE]を提供するために、気にしませんでしたので、実際の答えを提供しようとすることは現実的ではありません。しかし、あなたはプロパティにのみバインドすることができます。そしてプロパティは公開する必要があります。そしてC#は大文字小文字を区別するので、 'ViewSetList'は' viewSetList'と同じではありません。また、{Binding ViewSetList}はコントロール内の_item_のコンテキストでは有効ではありません。これらの問題に焦点を当てて始めてください。まだ助けが必要な場合は、良い[mcve]を含む質問を投稿し、デバッグするために何をしているのかを具体的に説明してください。 –

+0

でそれを公開し、viewSetListへのバインドを変更しました。しかし、まだ私は空白の画面が表示されている –

+0

あなたのコードで唯一の問題ではありません。それらは私が前のコメントで言及した唯一の問題でさえありません。 –

答えて

0

は、なぜあなたはItemsControlXamDataGridを入れたのですか? ItemsControlは不要です。

それを削除し、ViewSetListパブリックプロパティを作り、それ自体に、ウィンドウのDataContextを設定します。

public partial class MainWindow : Window 
{ 
    private ObservableCollection<Parameters> _viewSetList = new ObservableCollection<Parameters>(); 
    public ObservableCollection<Parameters> ViewSetList { get { return _viewSetList; } } 

    public MainWindow() 
    { 
     InitializeComponent(); 

     //Add data to the collection 
     _viewSetList.Add(new Parameters() { PARAMETER = "abc", INSTANCE = "def", UNIT = "hhshhd", VALUE = "hahha" }); 

     DataContext = this; 
    } 
} 

あなたは、プロパティへXamDataGridをバインドすることができます。

<Grid> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <igDP:XamDataGrid DataSource="{Binding ViewSetList}" > 
       <igDP:XamDataGrid.FieldLayouts> 
        <igDP:FieldLayout> 
         <igDP:FieldLayout.Fields> 
          <igDP:Field Name="PARAMETER"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="False" /> 
           </igDP:Field.Settings> 
          </igDP:Field> 
          <igDP:Field Name="VALUE"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="False" /> 
           </igDP:Field.Settings> 
          </igDP:Field> 
          <igDP:Field Name="UNIT"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="False" /> 
           </igDP:Field.Settings> 
          </igDP:Field> 
          <igDP:Field Name="INSTANCE"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="False" /> 
           </igDP:Field.Settings> 
          </igDP:Field> 

         </igDP:FieldLayout.Fields> 
        </igDP:FieldLayout> 
       </igDP:XamDataGrid.FieldLayouts> 
      </igDP:XamDataGrid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</Grid> 

あなたがすることはできませんプライベートフィールドにバインドします。

+0

@sampatnayak:役立つ回答を投票してください。https://stackoverflow.com/help/someone-answers – mm8

関連する問題