WPF绑定样式的TextBlock的Text属性

时间:2019-02-26 06:22:15

标签: c# wpf binding

我有一个包含GridCell样式模板的数据网格。我为此编写了此样式模板:

<Style x:Key="SfDataGridGridCell" TargetType="syncfusion:GridCell">
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="HorizontalAlignment" Value="Center"/>
                <Setter Property="FontFamily" Value="IRANSansMobile(FaNum) Light"/>
                <Setter Property="FontSize" Value="11.5"/>
                <Setter Property="BorderBrush" Value="Transparent"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="syncfusion:GridCell">
                            <Border BorderBrush="Transparent">
                                <Grid>
                                    <TextBlock TextWrapping="Wrap" Text="{Binding ???}"/>
                                </Grid>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>

             </Style>

我想将此样式应用于所有DataGrid的单元格。如何绑定从xaml或代码标记的值?

2 个答案:

答案 0 :(得分:1)

也许您需要的是ContentPresenter
如果是这样,则可以使用ContentPresenter代替TextBlock。

<Grid>
    <!--<TextBlock TextWrapping="Wrap" Text="{Binding ???}"/>-->
    <ContentPresenter Content="{TemplateBinding Content}"/>
</Grid>

有关如何在ContentPresenter中将样式应用于TextBlock的信息,请参考此处。
Applying style resources to ContentPresenter text

答案 1 :(得分:1)

恐怕您不能仅替换绑定的路径,而要重用模板的其余部分。 XAML不支持这样做。

您可以做的是使用XamlReader.Parse方法以编程方式创建几种样式,每列一种。然后,您可以简单地替换传递给该方法的字符串中的绑定路径。