将命令绑定到WPF中的ComboBoxItem

时间:2017-10-25 09:30:21

标签: wpf xaml combobox binding command

我有一个ComboBox的wpf项目。里面的项目是动态填写的。因此它绑定到包含Label和命令的模型。

如果用户选择Dropdown / ComboBox中的项目,则应执行命令。我尝试使用DataTemplate包含TextBlockHyperlink的命令。但是只有在选择LabelHyperlink)时才会执行命令,而如果我点击整个项目则不会执行。

<ComboBox ItemsSource="{Binding Path=States}" SelectedItem="{Binding CurrentState}" >
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Hyperlink Command="{Binding Command}" TextDecorations="None" Foreground="Black">
                    <TextBlock Text="{Binding Path=Label}"/>
                </Hyperlink>
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

现在的问题是,如何将我的命令绑定到ComboBoxItem

1 个答案:

答案 0 :(得分:1)

ComboBoxItem没有Command属性,但您可以从CurrentState属性的setter执行命令:

private State _currentState;
public State CurrentState
{
    get { return _currentState; }
    set
    {
        _currentState = value;
        if (_currentState != null)
        {
            _currentState.Command.Execute(null);
        }
    }
}

只要您在ComboBox中选择一个项目,就会设置此属性。另一种选择是处理视图中的SelectionChanged事件。