Как я могу получить ссылку на корневой контейнер ItemTemplate и затем изменить его свойства? - PullRequest
1 голос
/ 06 февраля 2011

На моей странице есть ползунок, который при перетаскивании также должен увеличивать размер элементов списка.Как я могу достичь этого?Как я могу получить ссылку на родительский контейнер в ItemTemplate, а затем изменить его высоту и ширину?В настоящее время у меня есть этот код на моем событии изменения значения ползунка: -

void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            Border parentBorder = ((Border)lstAlbumPhotos.ItemTemplate.LoadContent());
            double change = e.NewValue * 10;
            double percentage = 100 + change;
            double newWidth = percentage * _width / 100;
            double newHeight = percentage * _height / 100;
            parentBorder.Width = newWidth;
            parentBorder.Height = newHeight;

        }

Но это не работает.В приведенном выше коде Border является моим родительским контейнером.

Заранее спасибо:)

1 Ответ

1 голос
/ 06 февраля 2011

Метод LoadContent создает новый экземпляр Xaml, хранящийся в шаблоне. Вы не можете манипулировать содержимым самого шаблона таким образом. Кроме того, я действительно не думаю, что вы хотите этим заниматься.

Если вы действительно хотите манипулировать шириной и высотой границы в шаблоне, используйте привязку к промежуточному объекту (я назову его «Sizer»), который хранится как статический ресурс: -

<Grid.Resources>
    <local:Sizer x:Key="Sizer" />
</Grid.Resources>

<ListBox.ItemTemplate>
    <DataTemplate>
        <Border Width="{Binding Width, Source={StaticResource Sizer}}"
            Height="{Binding Height, Source={StaticResource Sizer}}" />

Вы также привязали бы свой ползунок к этому промежуточному объекту: -

 <Slider Value="{Binding Factor, Mode=TwoWay, Source={StaticResource Sizer}}" />

Теперь вам просто нужно создать класс Sizer со свойствами Factor, Width, Height. Вы бы хотели реализовать INotifyPropertyChanged, чтобы привязка к свойствам была обновлена. Затем вы перемещаете свою математику в этот объект. Когда коэффициент изменяется, вы изменяете свойства ширины и высоты и позволяете обработчикам привязок обновлять все существующие границы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...