WPF Silverlight Visibility 属性的绑定

Silverlight 控件的Visibility属性不能直接用true或者false绑定,而是要通过一个Converter来实现:

 

VisibilityConverter类代码:

[c-sharp] view plain copy
  1. using System;  
  2. using System.Windows;  
  3. using System.Windows.Data;  
  4.   
  5. namespace DMS.Controls  
  6. {  
  7.     public class VisibilityConverter:IValueConverter  
  8.     {  
  9.         public VisibilityConverter()  
  10.         {  
  11.         }  
  12.         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
  13.         {  
  14.             if (value == null)  
  15.                 return Visibility.Collapsed;  
  16.   
  17.             bool s = (bool)value;  
  18.   
  19.             return (s != true) ? Visibility.Collapsed : Visibility.Visible;  
  20.         }  
  21.   
  22.         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
  23.         {  
  24.             throw new NotImplementedException();  
  25.         }  
  26.   
  27.     }  
  28. }  

 

在XAML里引用这个类:

[c-sharp] view plain copy
  1.  <sdk:DataGrid AutoGenerateColumns="False" Height="284" HorizontalAlignment="Left" Margin="5,63,0,0" Name="OrderList" VerticalAlignment="Top" Width="798" ItemsSource="{Binding}">  
  2.                                                         <sdk:DataGrid.Resources >  
  3.                                                             <local:VisibilityConverter x:Key="iconverter"/>  
  4.                                                         </sdk:DataGrid.Resources>  
  5.                                                         <sdk:DataGrid.Columns >  
  6.                                                             <sdk:DataGridTemplateColumn Header="按钮是否可见示范绑定" Width="Auto">  
  7.                                                                 <sdk:DataGridTemplateColumn.CellTemplate>  
  8.                                                                     <DataTemplate>  
  9.                                                                         <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">  
  10.                                                                             <TextBlock Width="Auto" Text="订单类别:"/>  
  11.                                                                             <Button x:Name="XSJX_Confirm" Content="确认订单" Visibility="{Binding Path=XSJL_VISABLE,Converter={StaticResource iconverter}}"/>  
  12.                                                                         </StackPanel>  
  13.                                                                     </DataTemplate>  
  14.                                                                 </sdk:DataGridTemplateColumn.CellTemplate>  
  15.                                                             </sdk:DataGridTemplateColumn>  
  16. </sdk:DataGrid.Columns>  
  17. </sdk:DataGrid>  
  18.                                                              

 

其中: XSZJ_VISABLE 是bool 类型,= true 按钮可见;=false 按钮不可见,通过VisibilityConverter转成

Visibility.Collapsed 或 Visibility.Visible。

猜你喜欢

转载自blog.csdn.net/andrewniu/article/details/80480267