0

次のようにコンテンツの配置を設定するボタン(xamlで作成されたものではありません)があります:

btn.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;

ただし、コンテンツが長すぎると、テキストが見えなくなった時点でテキストが右にスライドします。ボタンは、このグリッドのパノラマ アイテム 2 内に作成されます。

<Grid x:Name="LayoutRoot">
    <controls:Panorama Title="Title" SelectionChanged="Panorama_SelectionChanged" FontSize="20">

        <!--Panorama item one-->
        <controls:PanoramaItem Header="Wall" Margin="40,0,0,0" Name="PIWall">

        </controls:PanoramaItem>

        <!--Panorama item two-->
        <controls:PanoramaItem Header="Messages" Margin="30,0,0,0" Name="PIMail">

        </controls:PanoramaItem>

    </controls:Panorama>
</Grid>

ボタンとその設定は次のとおりです。

HyperlinkButton btn = new HyperlinkButton();
        btn.Height = 89;
        btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
        btn.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        btn.Margin = new Thickness(60, -70, 0, 0);
        btn.Width = 290;
        btn.Content = message;
        btn.FontSize = 22;
        btn.Visibility = System.Windows.Visibility.Visible;
        btn.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
        panel.Children.Add(btn);
        scrollViewer.Content = panel;
        PIMail.Content = mailscrollViewer;

テキストがグリッドの余白を越えないようにするにはどうすればよいですか?

4

1 に答える 1

3

ボタン内でテキストを折り返すには、次のように XAML を使用できます。

<Button Width="200" Height="200">
    <Button.Content>
        <TextBlock TextWrapping="Wrap" Text="This is a long text that fits into button"/>
    </Button.Content>
</Button>

これをコードで実現するには、次のようにします。

Button btn = new Button();
btn.Height = 200;
btn.Width = 300;
TextBlock txt = new TextBlock();
txt.TextWrapping = TextWrapping.Wrap;
txt.Text = "A huge amount of text that will fill the button";
btn.Content = txt;
ContentPanel.Children.Add(btn);

ContentPanel は単純なグリッドです。

編集: HyperlinkBut​​ton の変更された投稿

ハイパーリンク ボタンでテキストの折り返しを有効にするには、ハイパーリンク ボタンのスタイルを編集する必要があります。App.xaml ファイルで次のように定義します。

    <Style x:Key="HyperlinkButtonStyle" TargetType="HyperlinkButton">
        <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="HyperlinkButton">
                    <Border Background="Transparent">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver"/>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TextElement"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="TextElement">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">
                            <TextBlock x:Name="TextElement" TextWrapping="Wrap" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" TextDecorations="Underline" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

重要な変更点は、TextBlock に "Wrap" に設定された TextWrapping プロパティが含まれるようになったことです。

次に、通常どおりにボタンを使用します。スタイルを設定することを忘れないでください。

var btn = new HyperlinkButton();
btn.Height = 200;
btn.Width = 300;
btn.NavigateUri = new Uri("http://bing.com", UriKind.Absolute);
btn.TargetName = "_blank";
btn.Style = Application.Current.Resources["HyperlinkButtonStyle"] as Style;
btn.Content = "This is a huge amount of text that will be in the hyperlink button";
ContentPanel.Children.Add(btn);
于 2012-08-10T17:29:58.987 に答える