1

我可以更改 DataTemplate 中元素的属性吗?例如:

<phone:PhoneApplicationPage.Resources>       
        <DataTemplate x:Key="LawItemTemplate">
            <StackPanel>
                <TextBlock
                    Text="{Binding Name}" 
                    TextWrapping="Wrap"/>
            </StackPanel>
        </DataTemplate>
</phone:PhoneApplicationPage.Resources>

我想更改 TextBlock FontSize,但是如何在 DataTemplate 中访问 TextBock?

不适合创建加载事件并按发件人获取元素的选项,因为这些更改对用户来说视觉上是显而易见的。谢谢。

4

3 回答 3

0

首先获取ListBoxitem的根元素

ListBoxItem item = listbox.ItemContainerGenerator.ContainerFromIndex(index) as ListBoxItem;

然后在元素树中搜索几个TextBlock调用.Children()或给出一个并按名称搜索NameTextBlock

于 2012-07-22T19:11:47.110 回答
0

如果您想更改某些内容,DataTemplate只需将其绑定到数据上的属性并进行更改即可。如果可能,应避免弄乱控件。

于 2012-07-23T04:20:01.450 回答
0

我不确定这是否是您的意思,但您可以使用Triggers.

像这样:

<DataTemplate x:Key="LawItemTemplate">
        <StackPanel>
            <TextBlock x:Name="NameHolder"
                Text="{Binding Name}" 
                TextWrapping="Wrap"/>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding SomeProp}" Value="SomeValue">
                    <Setter TargetName="NameHolder" Property="FontSize" Value="18"/>
                </DataTrigger>
            </DataTemplate.Triggers>
        </StackPanel>
    </DataTemplate>

当然,RelativeSource如果你需要监听视觉祖先的属性变化,你可以在触发器的绑定中使用。

于 2012-07-23T18:41:27.973 回答