代码之家  ›  专栏  ›  技术社区  ›  Program.X

Silverlight等效于ListBox的OnDataItemBound()。

  •  0
  • Program.X  · 技术社区  · 16 年前

    我在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>
    

    按钮 编辑日记安全按钮 应该根据该项目(代表日记)是否应用了安全性来处理。我可能只需要修改图像的不透明度来反映这一点。

    我的问题是我如何才能做到这一点?在ASP.NET中,我已经附加到了itemDataItemBound事件,但我认为在WPF/Silverlight中不存在该事件。

    2 回复  |  直到 16 年前
        1
  •  1
  •   DaveB    16 年前

    由于您特别询问了不透明度属性,请将按钮的不透明度属性绑定到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> 
    

    然后在数据上下文中:

    public double ButtonOpacity
    {
        get {return _buttonOpacity; }
    }
    

    对要控制的按钮的任何其他属性使用相同的想法。

        2
  •  1
  •   Dan Wray    16 年前

    如果我理解您的要求,您将希望公开对象上的属性,并在必要时使用该属性来呈现元素。IE要禁用该按钮,您可能需要使用isEnabled=“绑定安全性”。

    推荐文章