Silverlight эквивалент OnDataItemBound () для ListBox - PullRequest
0 голосов
/ 03 марта 2010

У меня есть ListBox в Silverlight, в котором есть список элементов. Каждый элемент имеет определенное количество дополнительных параметров, доступность которых зависит от каждого элемента.

   <ListBox.ItemTemplate>
      <DataTemplate>
         <StackPanel Orientation="Horizontal">                                    
            <TextBlock Text="{Binding Name}" />
            <Button HorizontalAlignment="Right" x:Name="editDiarySecurityButton">
               <Image Source="/xxx.yyy.Silverlight.Common;Component/Resources/Images/Icons/Ribbon/Small/editSecurity.png" Width="16" Height="16" />
            </Button>
         </StackPanel>
      </DataTemplate>                                                           
   </ListBox.ItemTemplate>  
</ListBox>

Кнопка editDiarySecurityButton должна обрабатываться в зависимости от того, применен ли к этому элементу (представляющему дневник) элемент Security или нет. Возможно, я бы просто изменил непрозрачность изображения, чтобы отразить это.

Мой вопрос: как мне этого добиться? В ASP.NET я бы прикрепил к событию ItemDataItemBound, но я не думаю, что это доступно в WPF / Silverlight.

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Поскольку вы конкретно спрашивали о свойстве Opacity, свяжите свойство Opacity для кнопки со свойством в DataContext, которое возвращает значение типа double. Добавьте любую необходимую логику к свойству, чтобы вернуть непрозрачность, которую вы хотите для этого элемента. Примерно так:

<Button HorizontalAlignment="Right" x:Name="editDiarySecurityButton"
 Opacity="{Binding Path=ButtonOpacity, Mode=OneWay}"> 
    <Image Source="/xxx.yyy.Silverlight.Common;Component/Resources/Images/Icons/Ribbon/Small/editSecurity.png" Width="16" Height="16" /> 
</Button> 

Тогда в вашем DataContext:

public double ButtonOpacity
{
    get {return _buttonOpacity; }
}

Используйте ту же идею с любым другим свойством кнопки, которой вы хотите управлять.

1 голос
/ 03 марта 2010

Если я понимаю, что вы спрашиваете, вы захотите выставить свойство объекта и использовать его для представления своих элементов по мере необходимости. то есть для отключения кнопки вы можете использовать что-то вроде IsEnabled = "{Binding HasSecurity}".

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