[英]How to make a DataGrid cell template that is larger than the cell but fully visible
[英]How to make a DataGrid Template with code?
我想只使用C#制作這個XAML模板:
<DataGrid AlternationCount="2" AutoGenerateColumns="False" Margin="6,78,9,47" Name="datagrid_Jobs">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title, Mode=OneWay}" Header="Job" />
<DataGridTextColumn Binding="{Binding Mode=TwoWay, Path=Score}" Header="Score" />
<DataGridTemplateColumn Header="Perecent Complete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Slider Margin="5" Maximum="100" Minimum="0" Value="{Binding Path=Score, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我只想在XAML中定義網格,我想用C#制作整個模板。
我不知道從哪里開始。
我認為你需要的只是在這個網站上檢查它:
http://harishasanblog.blogspot.ca/2011/01/create-datagrid-in-wpf-using-code.html
您應該使用FrameworkElementFactory
( msdn )。
XAML:
<DataGrid AlternationCount="2" AutoGenerateColumns="False" Margin="6,78,9,47" Name="datagrid_Jobs"
Loaded="datagrid_Jobs_Loaded">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title, Mode=OneWay}" Header="Job" />
<DataGridTextColumn Binding="{Binding Mode=TwoWay, Path=Score}" Header="Score" />
<DataGridTemplateColumn x:Name="pcColumn" Header="Perecent Complete" />
</DataGrid.Columns>
</DataGrid>
代碼隱藏:
public void datagrid_Jobs_Loaded(object sender, EventArgs e)
{
FrameworkElementFactory sliderHolder = new FrameworkElementFactory(typeof(Slider));
sliderHolder.SetBinding(Slider.ValueProperty, new Binding("Score") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });
sliderHolder.SetValue(Slider.MarginProperty, new Thickness(5));
sliderHolder.SetValue(Slider.MaximumProperty, (double)100);
sliderHolder.SetValue(Slider.MinimumProperty, (double)0);
var dataTemplate = new DataTemplate();
dataTemplate.VisualTree = sliderHolder;
dataTemplate.DataType = typeof(DataGridTemplateColumn);
pcColumn.CellTemplate = dataTemplate;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.