当我创建一个新窗口时,使用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
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>
属性Me
上的IntelliSense列出了IHavePassword
的成员,例如:
我希望在这里看到控件和基座Window
成员,而不是接口的成员。我该如何解决这个问题?
答案 0 :(得分:4)
我想你只是忘了用你的命名空间包围这个类:
Namespace ApptEase.Client.Prism.Views
Public Class LoginPopup
Implements IHavePassword
'...
End Class
End Namespace
答案 1 :(得分:1)
可以肯定的是,在您的评论中,您说LoginPopup是一个部分类,但在您的代码中,您没有“Partial语句”。我主要是C#开发人员,所以我不确定,但是不应该有“Partial Public LoginPopup”吗?
答案 2 :(得分:1)
回答被问到的问题。
添加一个新的&#34;窗口......&#34;而不是使用&#34;添加项目......&#34;并创建一个新的泛型类。然后添加自定义代码。
答案 3 :(得分:0)
首先,这与部分类或继承自Window
无关,正如许多评论中所建议的那样。 VB WPF窗口的项模板可以正常处理所有这些;我们停止了&#34;手工编码&#34; UI窗口和控件很久以前。
然后,我已经放弃了找出导致这种情况的原因,除了很可能是项目文件或VS功能失调。我创建了一个新的VB WPF项目,当我添加一个新的Window
时,一切都很好,即继承是正确的。