1

私はクラス「A」を持っています。このクラス A にはオブジェクト B があります。

私はデータグリッドを持っています。このデータグリッドで、いくつかの A プロパティをバインドします。さらに B プロパティをバインドしたいと思います。

私はこれを試しました:

<DataGridTextColumn Binding="{ Binding B.strDes}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />

私の問題は、値が表示されないことです。

B はオブジェクト プロパティであり、strDes は B プロパティです。

どうすればxamlで簡単にできますか?

4

2 に答える 2

1

私はあなたの例を試してみましたが、うまくいきます:

XAML:

<Window x:Class="DataGridBinding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid ItemsSource="{Binding ObjectAList}">      
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{ Binding ObjectB.strDes}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

分離コード:

public partial class MainWindow : Window
{
   public List<A> AList { get; set; }

   public MainWindow()
   {
      InitializeComponent();
      AList= new List<A>();
      AList.Add(new A());
      AList.Add(new A());
      AList.Add(new A());
      AList.Add(new A());
      DataContext = this;
   }
}

そしてクラスAとB:

public class A
{
   public B B { get; set; }

   public A()
   {
      B=new B();
   }
}

public class B
{
   private static int counter = 0;
   public string strDes { get; set; }

   public B()
   {
      strDes = "foo"+counter;
      counter++;
   }
}

出力:

ここに画像の説明を入力

編集:バインディングを確認するためのヒント。詳細情報を取得するには、TraceLevel を "High" に設定します。

<DataGridTextColumn Binding="{ Binding B.strDes, PresentationTraceSources.TraceLevel=High}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />    
于 2013-03-14T15:12:01.290 に答える
1

この構文で試すことができます

{Binding ElementName=B,  Path=strDes}

注:ソースを忘れないでください

DataContext="{Binding Source=yourData}"
于 2013-03-14T15:06:25.220 に答える