바인딩과 같은 DataTemplate을를 사용하는 I가 다음과 같은 데이터 그리드WPF는 다른이
<Window
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" mc:Ignorable="d" x:Class="VenusProductInfoQueryWPF.MainWindow"
Height="350" Width="646" WindowStyle="None" ResizeMode="NoResize" Topmost="False" MouseLeftButtonDown="Window_MouseLeftButtonDown" AllowsTransparency="True" WindowStartupLocation="CenterScreen" ShowInTaskbar="True">
<Window.Resources>
<DataTemplate x:Key="DataTemplate1">
<Button Tag="{Binding Name}" Content="Show" Click="LinkButton_Click"></Button>
</DataTemplate>
<DataTemplate x:Key="DataTemplate2">
<Button Tag="{Binding Sex}" Content="Show" Click="LinkButton_Click"></Button>
</DataTemplate>
</Window.Resources>`
<Grid>
<DataGrid x:Name="MyDataGrid" HorizontalAlignment="Left" Margin="60,44,0,0"
VerticalAlignment="Top" Height="223" Width="402" AutoGenerateColumns="False"
AutoGeneratedColumns="MyDataGrid_AutoGeneratedColumns">
<DataGrid.Columns>
<DataGridTextColumn Header="Age" Binding="{Binding Path=Age}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Sex" CellTemplate="{StaticResource DataTemplate2}"/>
<DataGridTemplateColumn Header="Name" CellTemplate="{StaticResource DataTemplate1}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
및 코드 숨김에서 내가 가진 :
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
dataSource = new DataTable();
dataSource.Columns.Add("Age");
dataSource.Columns.Add("Name");
dataSource.Columns.Add("Sex");
AddNewRow(new object[] { 10, "wang", "Male" });
AddNewRow(new object[] { 15, "huang", "Male" });
AddNewRow(new object[] { 20, "gao", "Female" });
dataGrid1.ItemsSource = dataSource.AsDataView();
}
}
}
DataTable에 (나는 단지 여기에 2를 쓴 30 개 이상의 열이 따라야 쉽게) .. 질문 : 모든 열에 서로 다른 빙싱 소스가있는 동일한 템플릿 스타일을 표시하려면 실제로 많은 다른 데이터 템플릿을 정의해야합니까 (예 : DataTemplate1, DataTemplate2 ...)) 각 DataGridTemplateColumn의 CellTemplate을 바인딩하려면? 하나의 데이터 템플릿을 정의하고 코드에서 또는 다른 방법으로 바인딩을 동적으로 설정할 수 있습니까? 답변 주셔서 감사합니다! 간결함을 위해
각 버튼마다 해당 속성이있는 바인딩이 있으므로 여기에 1 개의 템플릿 만 사용하는 방법이 있다고 생각하지 않습니다. 템플릿을 이렇게 짧게 만들 수는 있지만, '. 또한 각 버튼에 '태그'를 설정할 필요가 없도록 몇 가지 해결 방법을 시도해 볼 수 있습니다. 그런 다음 코드 숨김에서 더 많은 작업을 할 수 있습니다. –