Reputation: 2192
I am using SilverLight datagrid for showing Users Information, I have a link for opening popup window, Currently this button is showing for all records, I want to show it only if age > 18 How can I Hide the button for some records? This is my grid
<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>
I tried by adding a variable name CanHire in my DataSource and specifying like this,but its still visible for all records
<HyperlinkButton Visibility="Binding CanHire">
Upvotes: 0
Views: 19
Reputation: 6136
Your property CanHire is bool but Visibility is not, you can't just bind like that (and the curly braces are missing in your binding). Try This:
<HyperlinkButton IsEnabled="{Binding CanHire}"/>
Or alternatively:
<someControl.Resources>
<BoolToVisibilityConverter x:Key="VisibleIfTrue"/>
</someControl.Resources>
...
<HyperlinkButton Visibility="{Binding CanHire,
Converter={StaticResource VisibleIfTrue}}"/>
You have to implement the converter yourself or use one from a third party toolkit:
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert( object value, Type targetType,
object parameter, CultureInfo culture )
{
return ((bool)value) ? Visibility.Visible : Visibility.Collapsed;
}
}
Upvotes: 1