0

ここに画像の説明を入力国リストを表示する ComboEdit があります。フォームには、ComboEdit 値の選択時にアクティブに設定される ADDRESS タブがあります。ADDRESS タブのコントロールの位置は、指定されたレイアウトに従って変更する必要があります (ここでデータベースを使用して、選択した国に応じてレイアウトを保存できます)。

コンボエディットから選択した会社ごとに指定された順序に従って、アドレス形式とコントロールを動的に表示したいと考えています。さまざまなアドレス形式については、http: //msdn.microsoft.com/en-us/library/cc195167.aspxを参照してください。

選択した国によってコントロールの変更位置を変更したい。提案/アイデアはありますか? 現在、私は 2 つの異なるグリッドを使用して、国の値に応じて表示/非表示を作成しています。これは 1 つまたは 2 つの国では問題ありませんが、それほど多くのグリッドを追加することはできないため、データベースに保存したいと考えています。正しい方法を教えてください...!

<Grid Name="grdGroupA" Visibility="Hidden" Margin="0,0,95,21" HorizontalAlignment="Right" Width="714">
                        <Label Content="Honorific"  HorizontalAlignment="Left" Margin="18,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtAHonorific" HorizontalAlignment="Left" Margin="134,31,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtAHonorific_LostFocus"/>
                        <dxe:TextEdit Name="txtAFirstName" HorizontalAlignment="Left" Margin="309,31,0,0" VerticalAlignment="Top" Width="64" LostFocus="txtAFirstName_LostFocus"/>
                        <Label Content="First Name"  HorizontalAlignment="Left" Margin="242,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtAMiddleName" Margin="0,31,185,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="64" LostFocus="txtAMiddleName_LostFocus"/>
                        <Label Content="Middle Name"  HorizontalAlignment="Left" Margin="378,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtALastName" HorizontalAlignment="Right" Margin="0,31,35,0" VerticalAlignment="Top" Width="64" LostFocus="txtALastName_LostFocus"/>
                        <Label Content="Last Name" Margin="0,27,99,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="66" RenderTransformOrigin="-0.045,0.577"/>
                        <Label Content="Company Name"  HorizontalAlignment="Left" Margin="18,58,0,0" VerticalAlignment="Top" Width="100"/>
                        <dxe:TextEdit Name="txtACompanyName" HorizontalAlignment="Left" Margin="134,58,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <Label Content="Address1"  HorizontalAlignment="Left" Margin="18,84,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtAAddress1" HorizontalAlignment="Left" Margin="134,85,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtAAddress1_LostFocus"/>
                        <Label Content="Address2"  HorizontalAlignment="Left" Margin="18,108,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtAAddress2" HorizontalAlignment="Left" Margin="134,112,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtAAddress2_LostFocus"/>
                        <Label Content="City"  HorizontalAlignment="Left" Margin="18,135,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtACity" HorizontalAlignment="Left" Margin="134,139,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtACity_LostFocus"/>
                        <Label Content="State"  HorizontalAlignment="Left" Margin="242,135,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtAState" HorizontalAlignment="Left" Margin="290,135,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtAState_LostFocus"/>
                        <Label Content="Postal Code"  HorizontalAlignment="Left" Margin="410,131,0,0" VerticalAlignment="Top" Width="77"/>
                        <dxe:TextEdit Name="txtAPostalCode" HorizontalAlignment="Left" Margin="487,131,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95" LostFocus="txtAPostalCode_LostFocus"/>
                        <Button Content="Save" Visibility="Hidden" Name="BtnASave" HorizontalAlignment="Left" Height="30" Margin="330,172,0,0" VerticalAlignment="Top" Width="75" Click="BtnASave_Click"/>
                        <Button Content="Cancel" Name="BtnACancel" HorizontalAlignment="Left" Height="30" Margin="492,172,0,0" VerticalAlignment="Top" Width="75" Click="BtnACancel_Click"/>
                        <Button Content="Update" Visibility="Hidden" x:Name="BtnAEdit" HorizontalAlignment="Left" Height="30" Margin="410,172,0,0" VerticalAlignment="Top" Width="75" Click="BtnAEdit_Click_1"/>
                        <Button Content="Add New" x:Name="BtnAAddNew" HorizontalAlignment="Left" Height="30" Margin="250,172,0,0" VerticalAlignment="Top" Width="75" Click="BtnAAddNew_Click"/>
                        <Label Content="*" x:Name="lblAHonorificError" Foreground="Red" HorizontalAlignment="Left" Margin="227,31,0,0" VerticalAlignment="Top"/>
                        <!--<Label Content="*" x:Name="lblAHonorificError_Copy" Foreground="Red" HorizontalAlignment="Left" Margin="227,57,0,0" VerticalAlignment="Top"/>-->
                        <Label Content="*" x:Name="lblAAddress1Error" Foreground="Red" HorizontalAlignment="Left" Margin="227,84,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblAAddress2Error" Foreground="Red" HorizontalAlignment="Left" Margin="226,112,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblACityError" Foreground="Red" HorizontalAlignment="Left" Margin="226,138,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblAStateError" Foreground="Red" HorizontalAlignment="Left" Margin="384,134,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblAPostalCodeError" Foreground="Red" HorizontalAlignment="Left" Margin="581,130,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblAFirstNameError" Foreground="Red" HorizontalAlignment="Left" Margin="370,30,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblAMiddleNameError" Foreground="Red" HorizontalAlignment="Left" Margin="529,31,0,0" VerticalAlignment="Top"/>
                        <Label Content="*" x:Name="lblALastNameError" Foreground="Red" HorizontalAlignment="Left" Margin="677,29,0,0" VerticalAlignment="Top"/>

                    </Grid>
<Grid Name="grdGroupB" Visibility="Visible" Margin="0,0,141,21" HorizontalAlignment="Right" Width="668">
                        <Label Content="Honorific"  HorizontalAlignment="Left" Margin="18,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtBHonorific" HorizontalAlignment="Left" Margin="134,31,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <dxe:TextEdit Name="txtBFirstName" HorizontalAlignment="Left" Margin="309,31,0,0" VerticalAlignment="Top" Width="64"/>
                        <Label Content="First Name"  HorizontalAlignment="Left" Margin="242,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtBMiddleName" Margin="0,27,144,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="64"/>
                        <Label Content="Middle Name"  HorizontalAlignment="Left" Margin="378,27,0,0" VerticalAlignment="Top"/>
                        <dxe:TextEdit Name="txtBLastName" HorizontalAlignment="Right" Margin="0,27,10,0" VerticalAlignment="Top" Width="64"/>
                        <Label Content="Last Name" Margin="0,27,73,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="66"/>
                        <Label Content="Company Name"  HorizontalAlignment="Left" Margin="18,53,0,0" VerticalAlignment="Top" Width="100"/>
                        <dxe:TextEdit Name="txtBCompanyName" HorizontalAlignment="Left" Margin="134,58,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <Label Content="Address1"  HorizontalAlignment="Left" Margin="18,84,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtBAddress1" HorizontalAlignment="Left" Margin="134,85,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <Label Content="Address2"  HorizontalAlignment="Left" Margin="18,108,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtBAddress2" HorizontalAlignment="Left" Margin="134,112,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <Label Content="City"  HorizontalAlignment="Left" Margin="18,135,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtBCity" HorizontalAlignment="Left" Margin="134,139,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="95"/>
                        <Label Content="State"  HorizontalAlignment="Left" Margin="250,58,0,0" VerticalAlignment="Top" Width="59"/>
                        <dxe:TextEdit Name="txtBState" HorizontalAlignment="Left" Margin="309,58,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="64"/>
                        <Label Content="Postal Code"  HorizontalAlignment="Left" Margin="378,58,0,0" VerticalAlignment="Top" Width="77"/>
                        <dxe:TextEdit Name="txtBPostalCode" HorizontalAlignment="Left" Margin="460,54,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1,0.091" Width="64"/>
                        <Button Content="Save" Name="BtnBSave" HorizontalAlignment="Left" Height="30" Margin="412,172,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Cancel" Name="BtnBCancel" HorizontalAlignment="Left" Height="30" Margin="492,172,0,0" VerticalAlignment="Top" Width="75"/>

                    </Grid>

Grid のすべてのコントロールと同様。選択した国に応じて位置を設定する方法は?

助けて感謝!ありがとう!

4

2 に答える 2

0

2 つのラベルの表示順序を変更するサンプルを次に示します。

XAML

<Window x:Class="WpfApplication1.JsonWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="JsonWindow" Height="300" Width="300"
        >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBlock Text="Label 1" Grid.Row="{Binding label1}"/>
        <TextBlock Text="Label 2" Grid.Row="{Binding label2}"/>
        <Button Content="Change Position" Click="Button_Click" Grid.Row="2"/>
    </Grid>
</Window>

コードビハインド

public partial class JsonWindow : Window, INotifyPropertyChanged {
    public JsonWindow() {
        InitializeComponent();
        this.DataContext = this;
        label1 = 0;
        label2 = 1;
    }

    public int label1 {get;set;}

    public int label2 { get; set; }

    private void Button_Click(object sender, RoutedEventArgs e) {
        label1 = 1;
        label2 = 0;
        PropertyChanged(this, new PropertyChangedEventArgs("label1"));
        PropertyChanged(this, new PropertyChangedEventArgs("label2"));
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

しかし、@Novitchi Sが言ったように、マージン テクニックを廃止する必要があります。Grid.Row と Grid.Column を使用します。

于 2013-05-21T09:57:17.127 に答える