1

以下の .xaml ファイルの抜粋に示すように、「AddressDetails」UserControl アイテムを含む「AddressListBox」ListBox があります。Addresses コレクションは次のように定義されます。

ObservableCollection< アドレス > アドレス

Street、Number、PostCode、City は、Address クラスのプロパティです。以下に示す「{Binding property}」構文を使用すると、バインディングが失敗します。コメントアウトされたコードで「ダミー」文字列を使用すると、バインディングは成功します。「{Binding Path=property}」構文も試しましたが成功しませんでした。ユーザー コントロール内のデータをバインドするために使用する必要がある構文を提案できますか?

        <ListBox x:Name="AddressListBox"

                 DataContext="{StaticResource dataSettings}" ItemsSource="{Binding Path=Addresses, Mode=TwoWay}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <!--
                    <usercontrols:AddressDetails AddressRoad="dummy" AddressNumber="dummy2" AddressPostCode="dummy3" AddressCity="dummy4">
                    </usercontrols:AddressDetails>
                    -->

                    <usercontrols:AddressDetails AddressRoad="{Binding Street}" AddressNumber="{Binding Number}" AddressPostCode="{Binding PostCode}" AddressCity="{Binding City}">
                    </usercontrols:AddressDetails>

                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
4

1 に答える 1

0

このように、ユーザーコントロールのデータコンテキストをアイテムに設定する必要があります。

<usercontrols:AddressDetails DataContext={Binding} ... </usercontrols:AddressDetails>

これで、アイテムに関連する他のバインドが正しく機能するはずです。

于 2012-10-17T22:57:57.730 に答える