[英]WPF ListBox ExtendedMode Move selected item with IsSelected binding
[英]ListBox “IsSelected” binding not working
我一直在尋找高低問題的答案,但是沒有運氣,從中可以看出,我已經擁有所有正確的元素,但是由於某種原因,這並不起作用。
我需要在ListBox中選擇一個項目時運行IsSelected setter。
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#ViewModel
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);
}
}
}
非常感謝,
山姆
ListBoxItem的IsSelected
屬性綁定到IsSelected
視圖模型屬性,該屬性必須是數據項類型(即“ Activities
集合的元素類型)的屬性。
您需要聲明這樣的數據項類,例如
public class Activity : INotifyPropertyChanged
{
public string Name { get; set; }
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set
{
if (value != isSelected)
{
value = isSelected;
...
}
}
}
並按以下方式聲明“ Activities
集合:
public ObservableCollection<Activity> { get; set; }
Activity類的Name
屬性可以在ListBoxItem的DataTemplate中使用:
<ListBox ... ItemsSource="{Binding Activites}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
嘗試這個 :
<Setter Property="IsSelected" Value="{Binding DataContext.IsSelected,
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.