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; } }