0

添付されたプロパティコレクションをPanelに追加しようとすると、次のようになります。

<Grid x:Name="MainContent" Grid.Row="1">
    <StackPanel x:Name="MainContentSp">

        <do:AttachCollection.Col>
            <do:AttachItem x="y"/>
            <do:AttachItem x="z"/>
        </do:AttachCollection.Col>

        <TextBlock x:Name="tb1" Text="xx"/>
        <TextBlock x:Name="tb2" Text="yy"/>

    </StackPanel>
</Grid>

代わりにグリッドに割り当てています...どうすればパネルにアタッチできますか?

4

1 に答える 1

0

添付されたプロパティがすべてのUI要素と1つのリストインスタンスを共有していたことが判明したので、各要素に独自のリストインスタンスを与えるというかなりハックな方法を使用する必要がありました。

public static readonly
    DependencyProperty
    XProperty =
        DependencyProperty
            .RegisterAttached
            ("X",
                typeof(List<X>),
                typeof(X),
                new PropertyMetadata(new List<X>()));

public static readonly
    DependencyProperty
    XProperty =
        DependencyProperty
            .RegisterAttached
-->         ("XInternal",
                typeof(List<X>),
                typeof(X));
-->(removed)

ゲッターが各UI要素の新しいリストインスタンスを作成するようになりました。

public static List<X> GetX(UIElement element)
{
    var list = ((List<X>)(element.GetValue(XProperty)));
    if (list == null)
    {
        list = new List<X>();
        SetX(element, list);
    }
    return list;
}
于 2013-03-27T13:16:17.917 に答える