Silverlight 控件的Visibility属性不能直接用true或者false绑定,而是要通过一个Converter来实现:
VisibilityConverter类代码:
- using System;
- using System.Windows;
- using System.Windows.Data;
- namespace DMS.Controls
- {
- public class VisibilityConverter:IValueConverter
- {
- public VisibilityConverter()
- {
- }
- public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
- {
- if (value == null)
- return Visibility.Collapsed;
- bool s = (bool)value;
- return (s != true) ? Visibility.Collapsed : Visibility.Visible;
- }
- public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- }
在XAML里引用这个类:
- <sdk:DataGrid AutoGenerateColumns="False" Height="284" HorizontalAlignment="Left" Margin="5,63,0,0" Name="OrderList" VerticalAlignment="Top" Width="798" ItemsSource="{Binding}">
- <sdk:DataGrid.Resources >
- <local:VisibilityConverter x:Key="iconverter"/>
- </sdk:DataGrid.Resources>
- <sdk:DataGrid.Columns >
- <sdk:DataGridTemplateColumn Header="按钮是否可见示范绑定" Width="Auto">
- <sdk:DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
- <TextBlock Width="Auto" Text="订单类别:"/>
- <Button x:Name="XSJX_Confirm" Content="确认订单" Visibility="{Binding Path=XSJL_VISABLE,Converter={StaticResource iconverter}}"/>
- </StackPanel>
- </DataTemplate>
- </sdk:DataGridTemplateColumn.CellTemplate>
- </sdk:DataGridTemplateColumn>
- </sdk:DataGrid.Columns>
- </sdk:DataGrid>
其中: XSZJ_VISABLE 是bool 类型,= true 按钮可见;=false 按钮不可见,通过VisibilityConverter转成
Visibility.Collapsed 或 Visibility.Visible。