0

私は次のフォームを持っています:

ここに画像の説明を入力してください

MVVMに実装したXAMLは次のようになります。

<!-- Username -->
<Label Grid.Row="2" Style="{StaticResource TypicalLabelStyle}">Username:</Label>
<TextBox Grid.Row="2" Grid.Column="1" Style="{StaticResource TypicalTextBoxStyle}" Name="UsernameTextBox"
            Text="{Binding SourceConnection.Username, UpdateSourceTrigger=PropertyChanged}" 
            />

<CheckBox Grid.Row="2" Grid.Column="2" Margin="5" VerticalAlignment="Center" Name="CopyPasswordCheckBox">Copy Password</CheckBox>

<!-- Password -->
<Label Grid.Row="3" Style="{StaticResource TypicalLabelStyle}">Password:</Label>
<TextBox Grid.Row="3"  Grid.Column="1" >
    <TextBox.Style>
        <Style>          
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=CopyPasswordCheckBox, Path=IsChecked}" Value="True">
                    <Setter Property="TextBox.Text" Value="{Binding ElementName=UsernameTextBox, Path=Text}" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=CopyPasswordCheckBox, Path=IsChecked}" Value="False">
                    <Setter Property="TextBox.Text" Value="{Binding SourceConnection.Password}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

問題は[パスワード]テキストボックスにあります。[パスワードのコピー]チェックボックスがオンになっている場合、バインディングSourceConnection.Passwordは空です。チェックされていない場合は、適切な値のバインドを取得します。

(パスワードのコピーとは、[ユーザー名]テキストボックスのテキストが[パスワード]テキストボックスにコピーされることを意味します)。コードに「パスワードのコピー」のプロパティを保持してから、「...」かどうかを尋ねたくありません。

4

1 に答える 1

0

ビューモデルでチェックボックスの状態を保持するブール値を追加します。次に、ビューモデルで、ユーザー名の変更をキャプチャし、チェックボックスの状態を確認して、それに応じてパスワードを更新できます。

于 2012-05-22T14:43:47.997 に答える