0

ListBox の UserControl を定義しました

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <ListBox Height="Auto" HorizontalAlignment="Stretch" Name="deliveriesListBox" VerticalAlignment="Stretch" Width="Auto" DataContext="{Binding}" SelectionChanged="deliveriesListBox_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid x:Name="LayoutRoot" xmlns:src="clr-namespace:App"  Margin="0,5">
                            <src:DItem />
                        </Grid>
                    </DataTemplate>    
                </ListBox.ItemTemplate>                    
            </ListBox>
        </Grid>

ユーザーコントロールは

<UserControl x:Class="App.DItem"
    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"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480">

    <Grid x:Name="LayoutRoot" Margin="0,5">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0" FontSize="42" HorizontalAlignment="Left"  Text="Hello" VerticalAlignment="Stretch" Margin="0" />
        <TextBlock Grid.Row="1" Grid.Column="1" FontSize="20" HorizontalAlignment="Right" TextAlignment="Right" Margin="0">
                                        <Run Text="OK" />

        </TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" FontSize="20" Text="this is working only here.." HorizontalAlignment="Left"  />
    </Grid>
</UserControl>

VS2010 または Expression Blend 4 の「WYSIWYG」エディターで、「これはここでのみ機能しています」と「OK」の間にスペースが表示されます。写真はこちら - http://xrep.eu/pic.jpg

それは私が欲しいものですが..エミュレーターと電話ではhttp://xrep.eu/emu.jpgのように見えます

ですから、「これはここでしか機能していません」と「OK」の間にスペースはありません。誰かが定義する方法を教えてくれますか?「OK」文字列はせいぜい右側にありますか?

4

2 に答える 2

0

問題は、親コントロールの幅です。

デザインモードでは、次のコード(UserControlの定義内)が実行されています。

mc:Ignorable="d"
d:DesignHeight="480" d:DesignWidth="480"

これは、コントロールの高さ、さらに重要なことに幅を指定します。これは十分な幅があるので、2つのテキストの間のスペースを確認できます。

実行時にはこれは無視されるため、Grid(およびUserControl)は表示されているアイテムの幅になります。

2つのオプションがあります。

  1. MarginまたはPaddingプロパティを使用して、明示的な間隔を設定します。
  2. HorizontalAlignmentのをに設定GridStretchます。

希望する効果を正確に得るには、おそらくいくつかの実験と調整を行う必要があります。

于 2012-11-01T09:38:45.137 に答える
0

これを試してください

 <Grid x:Name="LayoutRoot" Grid.Row="1" Margin="0,5">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <TextBlock Grid.Row="0" FontSize="42" HorizontalAlignment="Left"  Text="Hello" VerticalAlignment="Stretch" Margin="0" />

        <DockPanel Grid.Row="1">
        <TextBlock  FontSize="20" HorizontalAlignment="Right" TextAlignment="Right" Margin="0" DockPanel.Dock="Right">
                                    <Run Text="OK" />

        </TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" FontSize="20" Text="this is working only here.." HorizontalAlignment="Left"  />
        </DockPanel>
    </Grid>

乾杯

于 2012-11-01T06:38:10.947 に答える