我有一个MenuItemViewModel的集合,它绑定到MenuItem的ItemsSource。
我想将ICommand绑定到通过此绑定创建的MenuItem对象。
问题是实际的MenuItem控件只在运行时添加,因为我绑定到他们的视图模型。
This is the GUI我现在有。
MenuItemViewModel.vb,包含要绑定的命令(所有这些成员都有相应的公共属性):
class ModalScreen extends React.Component {
render() {
return (
<View style={{ flex: 1 ,flexDirection: 'column', justifyContent: 'flex-end'}}>
<View style={{ height: "50%" ,width: '100%', backgroundColor:"#fff", justifyContent:"center"}}>
<Text>Testing a modal with transparent background</Text>
</View>
</View>
);
}
}
这是我的NotifTilesViewModel:
Private _text As String
Private _menuItems As IList(Of MenuItemViewModel)
Private _commandMenuItem As RelayCommand
因此,这个ViewModel是我绑定到你在附图上看到的通知磁贴UserControl的那个。
这是我的UserControl的XAML的相关部分:
Private _comPortMenuItems As ObservableCollection(Of MenuItemViewModel)
Public ReadOnly Property ComPortItems As ObservableCollection(Of MenuItemViewModel)
Get
Return _comPortMenuItems
End Get
End Property
如您所见,我将ItemsSource属性绑定到MenuItemsViewModel的ObservableCollection。
但是我怎样才能将每个对应的MenuItem控件绑定到我对_commandMenuItem的公共属性?
答案 0 :(得分:0)
我没有可用的Visual Studio,但我认为您可以通过在MenuItem中使用带有绑定ItemsSource的样式来完成。
像这样的东西(可能不是100%正确,但它应该给你的想法):
<Button.ContextMenu>
<ContextMenu x:Name="notifTileContextMenu">
<MenuItem Name="***" Command="{Binding Path=***}" Header="{Resx ResxName=***, Key=***}"/>
<MenuItem Name="***" Header="{Resx ResxName=***, Key=***}"/>
<Separator/>
<MenuItem Name="mItemOpenPort" Header="{Resx ResxName=***, Key=***}" ItemsSource="{Binding Path=ComPortItems}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding FileOpenCommand}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>