c# - WPF 标签数据模板

标签 c# .net wpf templates

我正在尝试为标签定义数据模板。这可能吗?因为我找不到任何有助于前进的东西,所以我定义了一个控制模板并试图让事情正常进行。不幸的是,当我按如下方式绑定(bind)两个项目时,我得到的标签什么都不显示,即使具有给定参数的对象已从后面的代码成功绑定(bind)到标签。请帮忙!

<Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Border>
                        <Grid>

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                            <TextBlock Background="Green" Text="{Binding TableName}" Grid.Column="0"></TextBlock>
                            <TextBlock Background="Red" Text="{Binding ColumnName}"  Grid.Column="1"></TextBlock>

                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

已编辑:根据要求对 window.resources 进行完整 Xaml

  <Window.Resources>

    <Style x:Key="myLabelTemplate" TargetType="Label">
        <!--<Setter Property="Background" Value="DarkKhaki"></Setter>
         <Setter Property="Foreground" Value="White"></Setter>-->

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Border>
                        <Grid>

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                                <ColumnDefinition Width="Auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                           <!-- <TextBlock Background="Green" Text="{Binding TableName}" Grid.Column="0"></TextBlock>
                            <TextBlock Background="Red" Text="{Binding ColumnName}"  Grid.Column="1"></TextBlock>-->

                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>


    <!-- <ControlTemplate TargetType="Label" x:Key="tablelLabel">
        <Grid>
            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="5" CornerRadius="5">
                <Border.Background>
                    <SolidColorBrush Color="#50000000"></SolidColorBrush>
                </Border.Background>
            </Border>
            <Grid>
                <Grid.Background>
                    <LinearGradientBrush StartPoint="0.5,0"  EndPoint="0.5,1">
                        <GradientStop Color="Transparent" Offset="0" />
                        <GradientStop Color="Black" Offset="1" />
                        <GradientStop Color="Transparent" Offset="1" />
                    </LinearGradientBrush>
                </Grid.Background>
            </Grid>
        </Grid>

    </ControlTemplate> -->

    <ControlTemplate TargetType="Label" x:Key="generalLabel">
        <Grid>
            <Border BorderBrush="#34B7AEAE" BorderThickness="3" CornerRadius="5">
            </Border>
        </Grid>
    </ControlTemplate>

</Window.Resources>

最佳答案

您需要按如下方式更改绑定(bind):

<TextBlock Background="Green" Text="{Binding Source={StaticResource data}, Path=TableName}" Grid.Column="0"/>
 <TextBlock Background="Red" Text="{Binding Source={StaticResource data}, Path=ColumnName}"  Grid.Column="1"></TextBlock>

我用一个具有这两个属性的简单类尝试了修改后的代码,它成功地工作了。

ObjectDataProvider 被引用如下:

 <ObjectDataProvider x:Key="data" ObjectType="{x:Type local:MyClass}">
 </ObjectDataProvider>

关于c# - WPF 标签数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338102/

相关文章:

.net - 明确的控制措施不会将其处置-有什么风险?

c# - fatal error : Unhandled Access Exception in AutoCAD C#. NET 插件

c# - 如何为 EF 中的 POCO 实体添加 C# 自动计算?

c# - 使用二进制格式写入和读取对象,u-sql

C# 替代元组

.net - "Object reference not set to an instance of an object"是什么意思?

WPF MessageBox 默认取消

c# - 从 SQL 数据库动态分配行颜色到 ListView WPF

c# - 我的 WPF 应用程序的后端层是否需要 WCF 层?

c# - 使用 C# 匿名类型