1

我最近开始学习 Silverlight,但不知道如何使其工作。

<ComboBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <StackPanel.Resources>
                <Style TargetType="TextBlock">
                    <Setter Property="FontWeight" Value="{Binding Path=FontWeight}"/>
                </Style>
            </StackPanel.Resources>
            <TextBlock Text="{Binding Path=Name}" Margin="0,0,5,0"/>
            <TextBlock  Text="{Binding Path=Prefix}"/>
        </StackPanel>
    </DataTemplate>
</ComboBox.ItemTemplate>

我想要做的是根据项目绑定值为 StackPanel 内的每个 TextBlock 设置 FontWeigth 属性。而不是在每个 TextBlock 上复制它。

4

1 回答 1

1

您不能将绑定表达式用作样式设置器值。您只能绑定到依赖对象上的依赖属性。

TextBlock 的各种字体属性都继承自其父级可视树。您可以通过将大量 TextBlock 元素添加到 Usercontrol,然后在 Usercontrol 上设置 FontWeight 或 FontSize 属性来看到这一点。

因此,一种解决方案是在某些父元素上设置 FontWeight 并依赖继承。不幸的是,您不能在 StackPanel 上设置 FontWeight。我将插入一个 ContehtControl,如下所示:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <ContentControl FontWeight="{Binding Path=FontWeight}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Name}" Margin="0,0,5,0"/>
                <TextBlock  Text="{Binding Path=Prefix}"/>
            </StackPanel>
        </ContentControl>
    </DataTemplate>
</ComboBox.ItemTemplate>

这应该工作!

于 2011-01-14T08:43:06.357 回答