1

私はこれに対する解決策を見つけようとしていましたが、オンラインで関連する答えを見つけることができませんでした。

ケースのアドレスなど、データを入力する必要のあるテキストボックスがたくさんあります。列挙型にバインドされ、選択できる値のリストがあるコンボボックスがあります

ホーム、オフィス、メインオフィス、研究所。コンボボックスで選択するときは、下のテキストボックスにそのアドレスを入力する必要があります。オブジェクトXからホームアドレス、オブジェクトYからオフィスアドレス、ZからMainOfficeを取得できます。コンボボックス選択を使用してこの条件付きデータバインディングを実行するにはどうすればよいですか。お知らせ下さい。

これらは私が選択できるオプションです

public enum MailToOptions
{
    Home,
    Office,
    CorporateOffice,
    Laboratory,
}



    <!-- Row 1 -->
    <Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" Content="Mail To:" />
    <ComboBox Grid.Column="0" Grid.Row="1"  Grid.ColumnSpan="5" Name="MailToComboBox" 

     ItemsSource="{Binding Source={StaticResource odp}}"    
     SelectionChanged="HandleMailToSelectionChangedEvent" >

    </ComboBox>
    <!-- Agency ID -->


    <!-- Name -->
    <Label Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="5" Content="Name" />
    <TextBox Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="5">
        <TextBox.Text>
            <Binding Path="Order.Agency.PartyFullName" Mode="TwoWay" />
        </TextBox.Text>
    </TextBox>

    <!-- Row 2 -->

    <!-- Address Line 1 -->
    <Label Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="5" Content="Address 1" />
    <TextBox Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="5">
        <TextBox.Text>
            <Binding Path="Order.Agency.AddressLine1" Mode="TwoWay"     />
        </TextBox.Text>
    </TextBox>
4

1 に答える 1

10

最良の方法は、オブジェクトにアイテムを作成し、ComboBoxテキストフィールドをにバインドすることです。ComboBox.SelectedItem

例えば、

<ComboBox x:Name="AddressList" ItemsSource="{Binding Addresses}" DisplayMemberPath="Name" />

<TextBox Text="{Binding SelectedItem.Street, ElementName=AddressList}" ... />
<TextBox Text="{Binding SelectedItem.City, ElementName=AddressList}" ... />
<TextBox Text="{Binding SelectedItem.State, ElementName=AddressList}" ... />
<TextBox Text="{Binding SelectedItem.ZipCode, ElementName=AddressList}" ... />

よりクリーンな方法はDataContext、TextBoxを保持するパネルを設定することです。

<ComboBox x:Name="AddressList" ItemsSource="{Binding Addresses}" DisplayMemberPath="Name" />

<Grid DataContext="{Binding SelectedItem, ElementName=AddressList}">
    <TextBox Text="{Binding Street}" ... />
    <TextBox Text="{Binding City}" ... />
    <TextBox Text="{Binding State}" ... />
    <TextBox Text="{Binding ZipCode}" ... />
</Grid>

ComboBoxをのようなものにバインドするか、コードビハインドで手動でObservableCollection<Address>設定することができます。ItemsSource

バインディングをお勧めしますが、その背後にあるコードで手動で設定すると、次のようになります。

var addresses = new List<Addresses>();
addresses.Add(new Address { Name = "Home", Street = "1234 Some Road", ... });
addresses.Add(new Address { Name = "Office", Street = "1234 Main Street", ... });
...
AddressList.ItemsSource = addresses;
于 2012-06-25T16:34:26.300 に答える