如何将旋转的TextBlocks设置得更靠近?

时间:2013-06-05 15:40:04

标签: wpf xaml

当我手动设置这些TextBlocks时,我可以通过将左边距改为-50来很好地将它们分开,除了第一个设置为0(零)。 enter image description here

我现在通过绑定填充TextBlocks,所以当我应用样式时,它会发生在所有TextBlocks上。

<Style x:Key="RotatedText" TargetType="TextBlock">
    <Setter Property="LayoutTransform">
        <Setter.Value>
            <RotateTransform Angle="-45" />
        </Setter.Value>
    </Setter>
    <Setter Property="Width" Value="130"/>
    <Setter Property="Margin" Value="-50,0,0,0"/>
</Style>

现在发生这种情况: enter image description here

我想知道的是我如何创建一个适用于所有TextBlocks的样式,或者为第一个TextBlock定义一个单独的样式,为另外一个定义另一个样式。

<ListBox x:Name="lstModules" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.Modules}" BorderBrush="{x:Null}" Background="{x:Null}" BorderThickness="0">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" CanVerticallyScroll="False" CanHorizontallyScroll="False"></StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Style="{StaticResource ListViewItemRotatedText}" Text="{Binding ModuleName}"></TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

2 个答案:

答案 0 :(得分:1)

你可以通过给它左边距50来移动整个ListBox。这样,TextBlock中包含的所有ListBox都会根据需要移动。< / p>

答案 1 :(得分:0)

我最终使用IValueConverter来分析项目,看它是否是列表中的第一项。

<Style.Triggers>
    <DataTrigger Binding="{Binding ModuleName, Converter={StaticResource firstItemConvertion}}" Value="true">
        <Setter Property="Margin" Value="-60,0,0,0" />
    </DataTrigger>
</Style.Triggers>


public class FirstItemConverter : IValueConverter
{
    public object Convert(object obj, Type type, object parameter, CultureInfo culture)
    {
        return (int.Parse((string)parameter)) < ModuleRepository.GetModuleIndexByModuleName(((string)obj));
    }

    public object ConvertBack(object obj, Type type, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}