【发布时间】:2015-02-09 11:29:22
【问题描述】:
我一直在寻找这个问题的答案,但没有运气,据我所知,我有所有正确的元素,但由于某种原因,这不想工作。
我需要 IsSelected setter 在 ListBox 中选择项目时运行。
XAML 代码
<ListBox HorizontalAlignment="Left" Height="226" Margin="10,34,0,0" VerticalAlignment="Top" Width="132" ItemsSource="{Binding Activities}" >
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
C# 视图模型
private bool m_isSelected;
public bool IsSelected
{
get { return m_isSelected; }
set
{
if (value != m_isSelected)
{
m_isSelected = value;
if (m_isSelected)
{
CurrentViews = getCurrentViews((BasePropertyTypeVM)CurrentActivity);
AvailableViews = getAvailableViews(Properties);
}
OnPropertyChanged(() => IsSelected);
}
}
}
非常感谢,
山姆
【问题讨论】:
-
你已经在setter中设置了一个断点并检查它没有被命中?
-
是的,我在设置器上使用了断点,它从未被调用过。
-
仔细检查一下,您的 IsSelected 属性在 Activity ViewModel 上对吗?而不是在父虚拟机上。
-
如果 getCurrentViews 或 getAvailableViews 遇到异常,setter 将无法工作
-
@Clemens
DataContext.IsSelected和RelativeSource Self会起作用吗???