Раскадровка в DataTemplate не работает - PullRequest
1 голос
/ 14 марта 2012

Мне нужно иметь раскадровку, которая могла бы изменить передний план в моем TextBox.Проблема в том, что этот TextBox должен быть в DataTemplate.

Как я могу изменить свой xaml, чтобы это работало?

1 Ответ

0 голосов
/ 14 марта 2012

Я сделал это по-другому, но этот метод явно не ссылается на текстовое поле, поэтому я полагаю, что он должен работать в вашем случае.Основные изменения заключаются в том, что вызов в стиле TextBox теперь неявный (поскольку состояния объявляются под этим элементом управления), а свойство Background изменяется вместо Foreground.

После адаптации тестового кода Iя написал в вашем случае, я думаю, это может выглядеть примерно так:

<DataTemplate x:Key="contentCheckBox">
<Grid>
<TextBox Text="Test text" Width="200" Height="35" Foreground="Blue" BorderBrush="Purple">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="TextBox">
                            <TextBox Width="190">
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="Normal"/>
                                        <VisualState x:Name="MouseOver">
                                            <Storyboard>
                                                <ColorAnimation Duration="0" To="Pink" Storyboard.TargetProperty="Background.Color" />
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                            </TextBox>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TextBox.Style>
    </TextBox>
    </Grid>
    </DataTemplate>
...