Визуальное изменение состояния не применяется, когда DataTemplate применяется через Content Control - PullRequest
1 голос
/ 10 мая 2019

В зависимости от того, как установлены мои кнопки Control Template, визуальные состояния будут или не будут применяться.К сожалению, механизм, с помощью которого я вижу их работу, мне недоступен, так как он недостаточно динамичен.

Соединение таблицы данных с помощью элемента управления содержимым и связывания действительно делает содержимое Textblocks хорошим, просто неt обрабатывать переход, когда кнопка отключена

<Style x:Key="ItemsControlStyle" TargetType="ItemsControl">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>

    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate DataType="xxx:myType">
                <Button Command="{Binding ActionCommand}" CommandParameter="{Binding Item}" Height="125" Width="200" Margin="10" >
                    <Button.Template>
                        <ContentControl Content="{Binding}" ContentTemplate="{Binding ItemDataTemplateKey, Converter={StaticResource StringToDataTemplateConverter}}" />
                        </ControlTemplate>
                    </Button.Template>
                </Button>
            </DataTemplate>

        </Setter.Value>
    </Setter>

</Style>


<DataTemplate x:Key="ItemTemplate">
    <Border x:Name="Border" BorderThickness="1" >
        <TextBlock x:Name="Textblock" Text="{Binding Caption}" FontFamily="{DynamicResource DefaultFont}"/>

        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Disabled">
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetName="TextBlock" Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" To="Gray" Duration="0:0:0.01"/>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </Border>
</DataTemplate>

Когда я подключаю шаблон к строке, все работает как положено

...