我有一个简单的ComboBox,我想在每次所选值更改时触发单独的命令。以下是我的标记示例:
<WrapPanel Grid.Row="0" Visibility="{Binding ShowToggleViewFeedViewManual}">
<ComboBox Margin="3,3,0,0">
<ComboBoxItem IsEnabled="{Binding CanSelectViewFeedData}" >
<ComboBoxItem.CommandBindings>
<CommandBinding Command="SelectViewFeedDataCommand" />
</ComboBoxItem.CommandBindings>
<TextBlock Text="View Feed Data"/>
</ComboBoxItem>
<ComboBoxItem IsEnabled="{Binding CanSelectViewManualData}">
<ComboBoxItem.CommandBindings>
<CommandBinding Command="SelectManualFeedDataCommand" />
</ComboBoxItem.CommandBindings>
<TextBlock Text="View Manual Data"/>
</ComboBoxItem>
</ComboBox>
</WrapPanel>
我收到错误消息“无法转换'SelectViewFeedDataCommand'”。我也得到了另一个ComboBoxItem的类似错误。 ICommand在ViewModel类中定义,该类是UserControl的DataSource,绑定为DataTemplate。
public ICommand SelectViewFeedDataCommand
{
get
{
// Code to perform
}
}
我对此进行了广泛的研究,但没有找到如何有效地将ICommand绑定到ComboBoxItem的答案。
我正在从使用一组radiobuttons和相关命令的现有代码中进行调整,这很容易完成。使用ComboBox没有简单的方法吗?
感谢。
答案 0 :(得分:0)
您是否尝试过将命令置于绑定中?
<CommandBinding Command="{Binding SelectManualFeedDataCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
编辑更新策略:
由于ComboBox项目不支持直接命令绑定,请尝试创建附加属性:
答案 1 :(得分:0)
我正在查看我的旧帖子,并意识到我从未在我的问题上发布解决方案......非常简单(如果不是优雅的话)。我刚刚在我的ViewModel中创建了一个包含我的组合框&#34;选项&#34;然后当SelectedValue被更改时,触发了我的&#34;更改了&#34;属性的setter中的逻辑:
<WrapPanel Grid.Row="0" Visibility="{Binding ShowToggleFeedViewManual}" >
<ComboBox Margin="10,10,10,10" Width="200" ItemsSource="{Binding AvailableDataSources}" SelectedValue="{Binding SelectedDataSource}"/>
</WrapPanel>
从视图模型:
public FeedSource SelectedDataSource
{
get { return _selectedDataSource; }
set
{
_selectedDataSource = value;
base.OnPropertyChanged("SelectedDataSource");
//additional code to perform here
}
}