1.是否是中介列显示不显示控制
2.数据转换控制
3.将金额转化为万元
1.telerik里面的gridview,列绑定bool类型的时候(最简单的方式绑定),页面直接显示checkbox
2.只要在GV列里面使用转换器,必须使用代理:比如isvisible,isreadonly的时候是必须的,
代码格式:
IsVisible="{Binding Path=DataSource.IsIntermediaryVisable,Mode=TwoWay,Source={StaticResource DataContextProxy}}"
但是把数字转化为其他格式的时候使用下面格式即可:
<TR:GridViewDataColumn IsReadOnly="True" Header="送审金额(万元)" IsFilterable="False" Width="3*" DataMemberBinding="{Binding SongShenMoney,Converter={StaticResource MoneyConverter}}" DataFormatString="{}{0:c}" HeaderTextAlignment="Center" />
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<SlCommon:DataContextProxy x:Key="DataContextProxy" /> //引入代理
</Grid.Resources>
<TR:RadGridView x:Name="ProjectGrid" ItemsSource="{Binding PageView,Mode=TwoWay}"
AutoGenerateColumns="False"
ShowGroupPanel="False"
IsReadOnly="True"
IsFilteringAllowed="False"
CanUserReorderColumns="False"
CanUserFreezeColumns="False"
CanUserSortColumns="False">
<TR:RadGridView.Columns>
<TR:GridViewColumn Width="80" Header="操作" HeaderTextAlignment="Center">
<TR:GridViewColumn.CellTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<HyperlinkButton x:Name="Select" Tag="{Binding}" CommandParameter="{Binding}" Command="{Binding Source={StaticResource DataContextProxy} ,Path=DataSource.SelectCommand}" >
<HyperlinkButton.Content>
<Image x:Name="btnViewDetail" Source="/Resources/edit.png" Width="16" Height="16" Margin="5,0,0,0" Cursor="Hand" ToolTipService.ToolTip="修改"/>
</HyperlinkButton.Content>
</HyperlinkButton>
<TR:RadToolBarSeparator/>
<HyperlinkButton x:Name="delete" Tag="{Binding}" CommandParameter="{Binding}" Command="{Binding Source={StaticResource DataContextProxy} ,Path=DataSource.DeleteCommand}" >
<HyperlinkButton.Content>
<Image x:Name="btndelete" Source="/Resources/do_delete.png" Width="16" Height="16" Margin="5,0,0,0" Cursor="Hand" ToolTipService.ToolTip="删除"/>
</HyperlinkButton.Content>
</HyperlinkButton>
</StackPanel>
</DataTemplate>
</TR:GridViewColumn.CellTemplate>
</TR:GridViewColumn>
<TR:GridViewDataColumn DataMemberBinding="{Binding Code}" HeaderTextAlignment="Center" Header="编码" Width="100"></TR:GridViewDataColumn>
<TR:GridViewDataColumn DataMemberBinding="{Binding Name}" HeaderTextAlignment="Center" Header="名称" Width="150"></TR:GridViewDataColumn>
<TR:GridViewDataColumn DataMemberBinding="{Binding DSort}" HeaderTextAlignment="Center" Header="排序" Width="50"></TR:GridViewDataColumn>
<TR:GridViewDataColumn IsVisible="{Binding Path=DataSource.IsIntermediaryVisable,Mode=TwoWay,Source={StaticResource DataContextProxy}}"
DataMemberBinding="{Binding IsIntermediarybool,Mode=TwoWay}" HeaderTextAlignment="Center" Header="是否是中介" Width="50"></TR:GridViewDataColumn>
<TR:GridViewColumn Header="是否停用" Width="70" HeaderTextAlignment="Center" >
<TR:GridViewColumn.CellTemplate>
<DataTemplate >
<CheckBox IsChecked="{Binding Isdisabled,Mode=TwoWay}" Command="{Binding Source={StaticResource DataContextProxy} ,Path=DataSource.IsdisabledCommand}" CommandParameter="{Binding}"/>
</DataTemplate>
</TR:GridViewColumn.CellTemplate>
</TR:GridViewColumn>
</TR:RadGridView.Columns>
</TR:RadGridView>
后置代码
private bool _isIntermediarybool;
public bool IsIntermediarybool
{
get { return _isIntermediarybool; }
set
{
if (!ReferenceEquals(_isIntermediarybool, value))
{
_isIntermediarybool = value;
OnPerprotyChange("IsIntermediarybool");
}
}
}
3.转化器的定义:
1 常用转换器
public class DataContextProxy : FrameworkElement
{
public DataContextProxy()
{
this.Loaded += new RoutedEventHandler(DataContextProxy_Loaded);
}
void DataContextProxy_Loaded(object sender, RoutedEventArgs e)
{
Binding binding = new Binding();
if (!String.IsNullOrEmpty(BindingPropertyName))
{
binding.Path = new PropertyPath(BindingPropertyName);
}
binding.Source = this.DataContext;
binding.Mode = BindingMode;
this.SetBinding(DataContextProxy.DataSourceProperty, binding);
}
public Object DataSource
{
get { return (Object)GetValue(DataSourceProperty); }
set { SetValue(DataSourceProperty, value); }
}
public static readonly DependencyProperty DataSourceProperty =
DependencyProperty.Register("DataSource", typeof(Object), typeof(DataContextProxy), null);
public string BindingPropertyName { get; set; }
public BindingMode BindingMode { get; set; }
}
2 金额转换
public class MoneyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return 0;
decimal result;
if (Decimal.TryParse(value.ToString(), out result))
{
return Math.Round(result / 10000, 2);
}
else
{
return 0;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}