Почему VerticalScrollBarVisibility не работает в стиле в Silverlight? - PullRequest
2 голосов
/ 22 мая 2010

VerticalScrollBarVisibility работает, когда я определяю его как встроенный:

<UserControl x:Class="TestScrollBar.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <UserControl.Resources>
        <Style TargetType="TextBox" x:Key="EditListContainerContentMultiLineTwoColumn">
            <Setter Property="AcceptsReturn" Value="True"/>
            <Setter Property="Width" Value="400"/>
            <Setter Property="Height" Value="300"/>
            <Setter Property="IsReadOnly" Value="False"/>
            <Setter Property="Margin" Value="0 0 0 20"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="TextWrapping" Value="Wrap" />
        </Style>

    </UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White" Margin="10">
        <StackPanel HorizontalAlignment="Left">
            <TextBox Text="this is a test" 
                     Style="{StaticResource EditListContainerContentMultiLineTwoColumn}"
                     VerticalScrollBarVisibility="Auto"
                    />
        </StackPanel>
    </Grid>
</UserControl>

Но когда я помещаю VerticalScrollBarVisibility в стиль, он показывает мне пустой экран:

<UserControl x:Class="TestScrollBar.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <UserControl.Resources>
        <Style TargetType="TextBox" x:Key="EditListContainerContentMultiLineTwoColumn">
            <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
            <Setter Property="AcceptsReturn" Value="True"/>
            <Setter Property="Width" Value="400"/>
            <Setter Property="Height" Value="300"/>
            <Setter Property="IsReadOnly" Value="False"/>
            <Setter Property="Margin" Value="0 0 0 20"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="TextWrapping" Value="Wrap" />
        </Style>

    </UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White" Margin="10">
        <StackPanel HorizontalAlignment="Left">
            <TextBox Text="this is a test" 
                     Style="{StaticResource EditListContainerContentMultiLineTwoColumn}"
                    />
        </StackPanel>
    </Grid>
</UserControl>

В WPFработает отлично работает.

Как заставить VerticalScrollBarVisibility работать в стиле?

1 Ответ

4 голосов
/ 22 мая 2010

Это не работает, потому что эти свойства не являются зависимыми и не могут быть применены со стилем.К сожалению, использование присоединенного свойства в ScrollViewer также не работает, поскольку они не привязаны к шаблону в стиле по умолчанию.

Единственное, что я могу думать о вас, - это создать прикрепленное поведение, которое устанавливает требуемые значения в текстовом поле, и применить его через стиль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...