簡體   English   中英

ListBox“ IsSelected”綁定不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM