1

右下の[OK]ボタンと[キャンセル]ボタンを備えた標準のダイアログ/ログインウィンドウを作成するための例を探しています。

StackPanels、Grids、dockpanelsのどれを使用するかわかりません。xとyの値を入力する必要があるため、Canvasを使用するのは通常正しくないことを理解しています。

これまでに作成したのは、[OK]と[キャンセル]のボタンです。

   <StackPanel Orientation="Horizontal" 
            FlowDirection="RightToLeft" Height="32">
        <Button Width="72" TabIndex="45" Margin="2,2,2,2">Cancel</Button>
        <Button Width="72" TabIndex="40" Margin="2,2,2,2">OK</Button>
    </StackPanel>

私が作成したい種類のウィンドウは、標準のダイアログウィンドウです。

4

3 に答える 3

1

私は次のマークアップを好みます:

 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="3*"/>
    </Grid.ColumnDefinitions>     

    <Grid Grid.ColumnSpan="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions> 

        <TextBlock VerticalAlignment="Center">Username:</TextBlock>
        <TextBlock VerticalAlignment="Center" Grid.Row="1">Password:</TextBlock>
        <TextBox Grid.Column="1"  />
        <TextBox Grid.Row=1"" Grid.Column="1"  />
    </Grid>

    <Button Grid.Row="1">Ok</Button>
    <Button Grid.Row="1" Grid.Column="1">Cancel</Button>
</Grid>

はい、グリッドの数を1に減らすことも可能ですが、意味がありません。また、外部グリッドの代わりにStackPanelを使用することもできます。

「最も軽いマークアップ」というフレーズは、別の方法で解釈できます。開発者にとって最も軽いのは、最もシンプルで明確です。コンピュータにとって最軽量は、初期化とレンダリングが最も高速です。与えられたケースに関しては、違いは実際には1つの追加のレイアウトコンテナにあります。これは、最適化を行う場合には実際には当てはまりません。

于 2012-04-20T12:19:36.720 に答える
0

私のアプリケーションでは、ChildWindowを使用するのが好きです。次に、すべてのページで、ユーザーが認証されているかどうかを検証し、認証されていない場合は子ウィンドウをポップします。これは、Silverlight内でナビゲーションタイプのプロジェクトを使用している場合にも、ブックマークを使用すると便利です。

 <toolkit:BusyIndicator IsBusy="False" Name="LoginBusy" >
        <Grid x:Name="LayoutRoot" Margin="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="189*" />
                <ColumnDefinition Width="189*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="65*" />
                <RowDefinition Height="32" />
                <RowDefinition Height="32" />
                <RowDefinition Height="26*" />
                <RowDefinition Height="35" />
            </Grid.RowDefinitions>
            <Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="4" Grid.Column="1" TabIndex="3" />
            <sdk:Label Grid.Row="1" Name="label1" HorizontalAlignment="Right" Content="Username" Margin="4"  />
            <sdk:Label Grid.Row="2" Name="label2" HorizontalAlignment="Right" Content="Password" Margin="4" />
            <TextBox Grid.Column="1" Grid.Row="1" Name="Username" Margin="4" Text="{Binding Username,Mode=TwoWay}" TextChanged="TextInserted" TabIndex="1" />
            <PasswordBox Grid.Column="1" Grid.Row="2" Name="Password" Margin="4" Password="{Binding Password,Mode=TwoWay}" PasswordChanged="TextInserted" TabIndex="2" />
            <TextBlock Grid.Column="1" Grid.Row="3" Height="37" HorizontalAlignment="Left" Visibility="Collapsed" Margin="19,13,0,0" Name="ErrorBlock" Text="Authentication Failed." VerticalAlignment="Top" Width="161" Foreground="Red" FontWeight="Bold" />
            <Button Grid.Row="4" Height="23" HorizontalAlignment="Left" Margin="46,4,0,0" Visibility="Collapsed" Name="button1" Content="CANCEL" VerticalAlignment="Top" Width="75" Click="CancelButton_Click" IsTabStop="False" />
            <Image Name="image1" Stretch="Fill" Source="Images/logo.png" />
        </Grid>
    </toolkit:BusyIndicator>

これは、ヘッダービットのない子ウィンドウのコンテンツです。InotifyPropertyChangedを実装するユーザーオブジェクトに直接バインドしていることに注意してください。また、Webサービスが検証を実行している間、ビジーインジケーターを有効にして、ユーザーが自分の要求が処理中であることを確認できるようにします。

乾杯、

于 2012-04-20T17:42:59.690 に答える
0
 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>     
    <TextBlock grid.row=1 grid.column=0 text="user name" />
    <TextBlock grid.row=1 grid.column=1 text="password" />
    <TextBox grid.row=2 grid.column=0  />
    <TextBox grid.row=2 grid.column=1  />
    <Button grid.row=3 grid.column=0 text="OK" />
    <Button grid.row=3 grid.column=1 text="Cancel" />
  </Grid>
于 2012-04-20T12:03:04.827 に答える