【问题标题】:Silver Light RowData Bound银光行数据绑定
【发布时间】:2014-08-15 07:37:04
【问题描述】:

我正在使用 SilverLight 数据网格来显示用户信息,我有一个用于打开弹出窗口的链接,目前此按钮显示所有记录,我只想在年龄 > 18 时显示它 如何隐藏某些记录的按钮? 这是我的网格

<sdk:DataGrid x:Name="myDG" ItemsSource="{Binding Pages}" 
                AutoGenerateColumns="False" HeadersVisibility="All" Grid.Row="2" Grid.ColumnSpan="2"
                IsReadOnly="True" CanUserResizeColumns="True" Margin="0" >
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="ID" MinWidth="100" Binding="{Binding Id}" />                        
                    <sdk:DataGridTextColumn Header="Name" MinWidth="100" Binding="{Binding Name}" />
                    <sdk:DataGridTextColumn Header="Number" MinWidth="100" Binding="{Binding Number}" Width="0.3*"  />
                    <sdk:DataGridTextColumn Header="Gender" MinWidth="100" Binding="{Binding Gender}" Width="0.3*"  />                        
                    <sdk:DataGridTextColumn Header="Age" MinWidth="100" Binding="{Binding Age}" Width="0.3*"  />                        
                    <sdk:DataGridTextColumn Header="CREATE DATE" MinWidth="100" Binding="{Binding A}" Width="0.3*" />                        
                    <sdk:DataGridTemplateColumn>
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <HyperlinkButton x:Name="Type" Content="Hire" Margin="5,5,0,0" >
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger EventName="Click">
                                                <cal:ActionMessage MethodName="Hire" cal:View.Model="{Binding Source={StaticResource VMResource}}">
                                                    <cal:Parameter Value="{Binding }" />
                                                </cal:ActionMessage>
                                            </i:EventTrigger>
                                        </i:Interaction.Triggers>
                                    </HyperlinkButton>                                        
                                </StackPanel>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>

我尝试在我的数据源中添加一个变量名 CanHire 并像这样指定,但它仍然对所有记录可见

<HyperlinkButton Visibility="Binding CanHire">

【问题讨论】:

  • 属性CanHire的类型是什么? boolVisibility 还是别的什么?
  • 在这种情况下,您需要使用转换器将true/false 转换为Visible/Collapsed

标签: silverlight datagrid


【解决方案1】:

您的属性 CanHire 是 bool 但 Visibility 不是,您不能像那样绑定(并且绑定中缺少花括号)。 试试这个:

<HyperlinkButton IsEnabled="{Binding CanHire}"/>

或者:

<someControl.Resources>
    <BoolToVisibilityConverter x:Key="VisibleIfTrue"/>
</someControl.Resources>
...
<HyperlinkButton Visibility="{Binding CanHire,
        Converter={StaticResource VisibleIfTrue}}"/>

您必须自己实现转换器或使用第三方工具包中的转换器:

public class BoolToVisibilityConverter : IValueConverter
{
    public object Convert( object value, Type targetType,
                   object parameter, CultureInfo culture )
    {
        return ((bool)value) ? Visibility.Visible : Visibility.Collapsed;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多