我在上下文菜单中有一个 MenuItem,我想使用 ItemSource 为列表中的每个项目生成子 MenuItem。这些生成的项目中的每一个还应该有子菜单项活动(可检查)、编辑和删除。
Custom Messages
-Custom Message 1
-Active
-Edit
-Delete
-Custom Message 2
-Active
-Edit
-Delete
-Custom Message 3
-Active
-Edit
-Delete
Run Code Online (Sandbox Code Playgroud)
以下 XAML 部分有效:
<MenuItem Header="Custom Messages" Visibility="{Binding Path=HasCustomMessages, Converter={StaticResource BVC}}" ItemsSource="{Binding Path=CustomMessages}" DisplayMemberPath="Description">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="ItemsSource">
<Setter.Value>
<x:Array Type="FrameworkElement">
<MenuItem Header="Active" IsCheckable="True" IsChecked="{Binding Path=Active}"></MenuItem>
<Separator></Separator>
<MenuItem Header="Edit" Name="EditCustomMessageButton" Click="EditCustomMessageButton_Click" Style="{x:Null}"></MenuItem>
<MenuItem Header="Delete" Name="DeleteCustomMessageButton" Click="DeleteCustomMessageButton_Click" Style="{x:Null}"></MenuItem>
</x:Array>
</Setter.Value>
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Add Custom Message" Name="AddCustomMessageButtton" Click="AddCustomMessageButtton_Click"></MenuItem>
<Separator></Separator>
<MenuItem Header="Delete" Name="DeleteButton" Click="DeleteButton_Click"></MenuItem>
Run Code Online (Sandbox Code Playgroud)
但是有两个问题: …
我刚刚开始使用VS2017,并注意到在WPF Dispatcher中,当在窗口内编辑时,对象不再显示在IntelliSense中.
看看我能看到的定义:
<EditorBrowsable(EditorBrowsableState.Advanced)>
Public ReadOnly Property Dispatcher As Dispatcher
Run Code Online (Sandbox Code Playgroud)
但是,隐藏此选项的选项不适用于Visual Basic:
现在很可能这是VS2017中的一个错误,但万一这不是什么想法?
我有一个混合的VB6(入口点)到.Net应用程序.
在.Net中,我有一个类,它具有Date属性(Date1-Date4),并且公开了,并且COM Visible等等于VB6代码.
在VB6代码中有一个方法,它采用Date ByRef并修改它.
使用在VB6(dt1-dt4)中声明的日期,这可以正常工作,我传递ByRef的日期变量得到更新,但是如果我在我的类(Date1-Date4)上传递.Net日期,它会更新.
work arround是将TmpDate传递给方法,然后将值分配给.Net属性.
然而,我想找到一个合适的解决方案,因为我正在替换VB6代码,这很容易被遗漏.
VB.Net宣言
<ComVisible(True)>
Public Class DotNetDatesClass
Implements INotifyPropertyChanged, IDotNetDatesClass
Private _Date1 As DateTime
<ComVisible(True)>
Public Property Date1 As DateTime Implements IDotNetDatesClass.Date1
Get
Return _Date1
End Get
Set(value As DateTime)
_Date1 = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
VB6示例:
dotNetDates.Date1 = DEFAULT_DATE
dotNetDates.Date2 = DEFAULT_DATE
dotNetDates.Date3 = DEFAULT_DATE
dotNetDates.Date4 = DEFAULT_DATE
getDates connectionString, dotNetDates.Date1, dotNetDates.Date2, dotNetDates.Date3, dotNetDates.Date4
Run Code Online (Sandbox Code Playgroud)
解决方法:
Dim dt1 As Date
Dim dt2 As Date
Dim dt3 As Date
Dim dt4 As Date …Run Code Online (Sandbox Code Playgroud)