1

こんにちは私はネストされたオブジェクトを使用したWPFデータバインディングの理解に問題があります。

ListMembersというUser_activationオブジェクトのリストを含むワークグループクラスがあり、そのプロパティを表示したいと思います。ネストされたプロパティにアクセスするにはどうすればよいですか?このクラスには、ユーザー名を持つUserという別のオブジェクトが含まれています。最終的には、WPF_test.User_activationではなくコンボボックスにユーザー名を表示したいと思います。

以下は、XAMLコードと対応するレイアウトです。

<ListView x:Name="ListViewWorkgroups" VerticalAlignment="Top" Height="Auto" Width="Auto" ItemsSource="{Binding listWorkgroups}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Width="auto" Header="Workgroup" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
                        <GridViewColumn Width="auto" Header="Skills">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox  IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListSkills}" ></ComboBox>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Width="auto" Header="Members">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate >
                                    <ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" ></ComboBox>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView> 

レイアウト: http: //i50.tinypic.com/ydy5h.png

ありがとうございました!

4

2 に答える 2

2

ComboBoxのItemTemplateを設定する必要があります

<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" >
<ComboBox.ItemTemplate>
    <DataTemplate>
       <TextBlock Text="{Binding User.Username}"/>
    </DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

別の方法として、複雑なものが必要ない場合は、DisplayMemberPathをバインドできます。

<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" DisplayMemberPath="{Binding User.Username}"/>

「。」を使用します 通常のC#コードの場合と同じようにプロパティにアクセスします

于 2013-01-03T15:35:16.617 に答える
0

これは前の回答のフォローアップにすぎません。バインディングでは、ファイルシステム形式で先頭のピリオドを使用できることを発見しました。

<ComboBox ItemsSource="{Binding .ListMembers}">
<DataTemplate>
   <TextBlock Text="{Binding .User.Username}"/>
</DataTemplate>

その構文は意味的に何も追加しませんが、場合によってはステートメントをより読みやすくします(そして、XAMLは確かにそれを使用できます!)

より良い例を次に示します。

<ComboBox ItemsSource="{Binding Caliber}" DisplayMemberPath=".Thickness" />

ここThicknessで、はのプロパティですCaliber

于 2013-11-30T01:44:56.453 に答える