我的原始数据网格确实有一些列,其中绑定值为bool。[默认情况下,这将显示为复选框]
我已经定义了一个单元格模板,可以创建
我想为此使用一个通用的datagrid controltemplate,就像下面定义的一样。 然而,它并没有带来约束力 - 它显示为空白。
有人可以帮我发现我做错了吗?
<Style x:Key="dgCellBool" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Ellipse>
<Ellipse.Height>10</Ellipse.Height>
<Ellipse.Width>10</Ellipse.Width>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Binding}" Value="True">
<Setter Property="Fill" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Binding}" Value="False">
<Setter Property="Fill" Value="Green"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
由于 拉杰什
答案 0 :(得分:0)
您正在尝试绑定DataGridCell的Binding属性,但DataGridCell没有任何Binding属性。 Yoy应该设置Path = Column.Binding。 DataGridCell具有Column属性,该属性还具有Binding属性。
Binding="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Column.Binding}"
我希望这会有所帮助。
答案 1 :(得分:0)
您需要提供ContentPresenter
来展示内容,并确保添加原始Border
中丢失的Template
:
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
更新&gt;&gt;&gt;
如果您想要Ellipse
而不是Border
,只需将其添加回Grid
... Ellipse
对象不能包含任何内容:
<Style x:Key="dgCellBool" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid>
<Ellipse Height="10" Width="10">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={
RelativeSource TemplatedParent}, Path=Binding}" Value="False">
<Setter Property="Fill" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
<ContentPresenter VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>