Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将WPF DatagridCell绑定到源_Wpf_Binding_Controltemplate - Fatal编程技术网

将WPF DatagridCell绑定到源

将WPF DatagridCell绑定到源,wpf,binding,controltemplate,Wpf,Binding,Controltemplate,我的原始datagrid确实有一些列,其中绑定值为bool。[默认情况下,这将显示为复选框] 我已经定义了一个单元格模板,可以创建 我想为此使用一个通用的datagrid控件模板,如下面定义的模板。 但是,它没有带来绑定值-它显示为空 有人能帮我找出我做错了什么吗 <Style x:Key="dgCellBool" TargetType="{x:Type DataGridCell}"> <Setter Property="Template">

我的原始datagrid确实有一些列,其中绑定值为bool。[默认情况下,这将显示为复选框]

我已经定义了一个单元格模板,可以创建

我想为此使用一个通用的datagrid控件模板,如下面定义的模板。 但是,它没有带来绑定值-它显示为空

有人能帮我找出我做错了什么吗

    <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>

10
10
谢谢
Rajesh

您正在尝试绑定DataGridCell的绑定属性,但DataGridCell没有任何绑定属性。Yoy应设置Path=Column.Binding。DataGridCell具有Column属性,该属性还具有Binding属性

Binding="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Column.Binding}" 

我希望这会有所帮助。

您需要提供一个
ContentPresenter
来呈现内容,并确保添加将从原始
模板中丢失的
边框:

<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>

您好,Ethicalogics,我已经尝试了您的建议,但结果是一片空白。Hiya Sheridan,如果我添加了ContentPresenter,我将在哪里应用数据触发器?
<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>