为什么我不创建继承自Window的新WPF Windows?

Pro*_*ofK 6 .net wpf interface wpf-controls implements

当我使用Add Item ...对话框创建一个新窗口时,我创建的窗口例如NewWindow不会从Window继承.它只有与类型相同的接口Object.一个例子:

我有下面的弹出窗口代码.代码只能看到IHavePassword成员,而不是`LoginPopup'的其余成员,就像它的控件一样.

Public Class LoginPopup
    Implements IHavePassword

    Public ReadOnly Property Password As SecureString Implements IHavePassword.Password
        Get
            'Return Me.PasswordBox.????
        End Get
    End Property

    Public Event PasswordChanged As RoutedEventHandler Implements IHavePassword.PasswordChanged
    Public Sub PassWordChangedHandler(sender As Object, e As EventArgs)
        PasswordChangedEvent(sender, e)
    End Sub

    Public Sub Close() Implements IHavePassword.Close
        Throw New NotImplementedException
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

OH,这里也是必要的XAML:

<Window x:Class="ApptEase.Client.Prism.Views.LoginPopup"
....
<StackPanel Orientation="Vertical" Margin="0">
    <DockPanel LastChildFill="True">
        <TextBlock Text="{Binding Path=UsernameLabel}" DockPanel.Dock="Left" TextAlignment="Right" Margin="5,9,5,5" MinWidth="70" />
        <TextBox Text="{Binding Path=Username, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" Width="Auto" Margin="5" />
    </DockPanel>
    <DockPanel LastChildFill="True">
        <TextBlock Text="{Binding Path=PasswordLabel}" DockPanel.Dock="Left" TextAlignment="Right" Margin="5" MinWidth="70" />
        <PasswordBox x:Name="PasswordBox" PasswordChanged="PassWordChangedHandler" Width="Auto" Margin="5" />
    </DockPanel>
    <DockPanel LastChildFill="True" Height="59">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Content="Log in" Command="{Binding Path=LoginCommand}" CommandParameter="{Binding ElementName=This}" Margin="5" Padding="15,10,15,10" />
            <Button Content="Cancel" Command="{Binding Path=CancelCommand}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" Margin="5" Padding="15,10,15,10"/>
        </StackPanel>
    </DockPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

属性上的IntelliSense Me列出了成员IHavePassword,例如:

在此输入图像描述

我希望在这里看到控件和基本Window成员,而不是接口的那些.我该如何解决这个问题?

hai*_*ndl 4

我认为您只是忘记用名称空间包围该类:

Namespace ApptEase.Client.Prism.Views
    Public Class LoginPopup
        Implements IHavePassword

        '...

    End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)