咨詢下懂WPF這一塊技術的高手。
我手頭有這段代碼,這里的幾個引數究竟怎么用?
Type typeTarget, object param, CultureInfo culture ?
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
int iLen = 0;
string sCells = (string)value;
iLen = sCells.Length;
if (iLen > 5)
{
return new SolidColorBrush(Color.FromRgb(200, 150, 100));
}
else
{
return new SolidColorBrush(Color.FromRgb(0, 0, 0));
}
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return null;
}
目前我做的是一個顯示DataGrid的功能 如圖

我在前臺XAML的寫法如下:
<Window x:Name="fmMain" x:Class="WPF_DataGrid_Demo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_DataGrid_Demo"
xmlns:cvt="clr-namespace:WPF_DataGrid_Demo"
xmlns:setFonts = "clr-namespace:WPF_DataGrid_Demo"
Title="MainWindow" Height="1024" Width="1286" WindowStartupLocation="CenterScreen" SizeToContent="Width" Loaded="fmMain_Loaded">
<Window.Resources>
<cvt:ConvertColor x:Key="cvtColor"/>
<setFonts:SetUpFont x:Key = "setupFont"/>
</Window.Resources>
<Viewbox>
<Canvas Width = "1280" Height="1024">
<Grid Name = "dataGrid" Width = "1280" Height="1024">
<DataGrid x:Name="dataResult" RowHeaderWidth="0" ColumnHeaderHeight="0" ScrollViewer.CanContentScroll="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" AutoGenerateColumns="False" HeadersVisibility="None">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding s01}" Foreground = "{Binding s01, Converter={StaticResource cvtColor}}"
FontSize="{Binding s01, Converter={StaticResource setupFont}}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding s02}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Canvas>
</Viewbox>
</Window>
前臺代碼里標紅的就是給DataGrid第1列滿足條件的單元格設定字體大小是32以及前景色是棕色。
后臺代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Windows.Media.TextFormatting;
using System.Globalization; //1.參考這個單元
namespace WPF_DataGrid_Demo
{
/// <summary>
/// MainWindow.xaml 的互動邏輯
/// </summary>
///
public class DataContent
{
public string s01 { get; set; }
public string s02 { get; set; }
public SolidColorBrush ForeCol01CellsBrush { get; set; } //第1列的前景色 背景色 和字體大小
public SolidColorBrush BackCol01CellsBrush { get; set; }
public int iCol01FontSize { get; set; }
}
public class ConvertColor : IValueConverter //2.定義一個類繼承介面IValueConverter 覆寫Convert等方法
{
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
int iLen = 0;
string sCells = (string)value;
iLen = sCells.Length;
if (iLen > 5)
{
return new SolidColorBrush(Color.FromRgb(200, 150, 100));
}
else
{
return new SolidColorBrush(Color.FromRgb(0, 0, 0));
}
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return null;
}
}
public class SetUpFont : IValueConverter //2.定義一個類繼承介面IValueConverter 覆寫Convert等方法
{
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
return 32;
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return null;
}
}
public partial class MainWindow : Window
{
private ObservableCollection<DataContent> dataContent = new ObservableCollection<DataContent>();
public MainWindow()
{
InitializeComponent();
Debug.WriteLine(dataResult.Columns.Count.ToString());
}
private void fmMain_Loaded(object sender, RoutedEventArgs e)
{
dataContent.Clear();
dataContent.Add(new DataContent()
{
s01 = "A",
s02 = "第2列第1行",
//第1列默認背景色和前景色
ForeCol01CellsBrush = new SolidColorBrush(Color.FromRgb(0, 0, 0)),
BackCol01CellsBrush = new SolidColorBrush(Color.FromRgb(255, 255, 255)),
iCol01FontSize = 21
}) ;
dataContent.Add(new DataContent()
{
s01 = "第1列第2行",
s02 = "第2列第2行",
//第1列默認背景色和前景色
ForeCol01CellsBrush = new SolidColorBrush(Color.FromRgb(0, 0, 0)),
BackCol01CellsBrush = new SolidColorBrush(Color.FromRgb(255, 255, 255)),
iCol01FontSize = 21
});
//修改第1列第1行單元格的背景色和前景色
dataContent[0].ForeCol01CellsBrush = new SolidColorBrush(Color.FromRgb(0, 0, 255));
dataContent[0].BackCol01CellsBrush = new SolidColorBrush(Color.FromRgb(255, 182, 161));
dataContent[0].iCol01FontSize = 33;
dataResult.ItemsSource = dataContent;
}
}
}
我想咨詢的是Convert和ConvertBack方法究竟是什么意思?
2.ConvertBack方法應該回傳什么值?
3.Convert(object value, Type typeTarget, object param, CultureInfo culture)和
ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
2個方法里幾個引數究竟什么含義?
public class SetUpFont : IValueConverter //2.定義一個類繼承介面IValueConverter 覆寫Convert等方法
{
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
return 32;
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return null;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/149782.html
上一篇:為什么bert的intermediate.dense.weight的size是[3072, 768],3072=4*H,為什么是4倍呢?
下一篇:R語言求解方程實根
