我有一个ComboBox
的wpf项目。里面的项目是动态填写的。因此它绑定到包含Label
和命令的模型。
如果用户选择Dropdown / ComboBox
中的项目,则应执行命令。我尝试使用DataTemplate
包含TextBlock
和Hyperlink
的命令。但是只有在选择Label
(Hyperlink
)时才会执行命令,而如果我点击整个项目则不会执行。
<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
?
答案 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
事件。