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 にアクセスするにはどうすればよいですか?

Load イベントを作成し、送信者によって要素を取得するオプションは適合しません。これは、変更がユーザーにとって視覚的に目立つためです。ありがとう。

4

3 に答える 3

0

まず、ListBoxアイテムのルート要素を取得します

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

次にTextBlock、要素ツリーを検索し、名前で検索します.Children()NameTextBlock

于 2012-07-22T19:11:47.110 に答える
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 に答える
0

何かを変更したい場合は、DataTemplateそれをデータのプロパティにバインドし、代わりにそれを変更します。可能であれば、コントロールを台無しにすることは避けてください。

于 2012-07-23T04:20:01.450 に答える