我试图弄清楚WPF中的模板是如何工作的。是否有可能改变这一点:
<DataGrid x:Name="AppSettingsTextBoxes" Grid.Row="7" Style="{StaticResource AppSettingsDataGridStyle}" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Element Name" Width="*" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Value}" Header="Value" Width="*" />
<DataGridTextColumn Binding="{Binding Comment}" Header="Comment" Width="4*" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
这样的事情:
<Grid.Resources>
<DataTemplate x:Key="TextBoxGridTemplate">
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Element Name" Width="*" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Value}" Header="Value" Width="*" />
<DataGridTextColumn Binding="{Binding Comment}" Header="Comment" Width="4*" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</Grid.Resources>
...
<DataGrid x:Name="AppSettingsTextBoxes" Grid.Row="7" Style="{StaticResource AppSettingsDataGridStyle}" (???)DataTemplate ="{StaticResource TextBoxGridTemplate}" />
答案 0 :(得分:1)
是否有可能改变......
没有
DataGrid
是DataTemplate
的实例,而不是DataGrid
。而且,您无法在DataTemplate
中定义DataGrid
列。
如果要在多个不同的位置重用相同的列,可以考虑创建一个以编程方式创建这些列的自定义public class CustomDataGrid : DataGrid
{
public CustomDataGrid()
{
Columns.Add(new DataGridTextColumn() { Binding = new Binding("Name"), Header = "Element Name" });
}
}
类:
DataGrids
然后,您可以在XAML中创建此类的实例:
但您无法在XAML中定义列的实例,然后在多个select *
from Table
where Table.DateColumn BETWEEN DATEADD(d, -90, current_timestamp) AND current_timestamp
中重复使用此XAML。