簡體   English   中英

如何在列表框中為列表框C#WPF中的特定項目設置復選框

[英]how to set checkbox in listbox for specific item in listbox C# WPF

我有一個如下所示的列表框:

    <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="385" Margin="21,138,0,0" VerticalAlignment="Top" Width="273" ItemsSource="{Binding Path=locationList}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Button Name="btnDelete" Click="btnDelete_Click" Width="15" Height="15" HorizontalAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Content="x" />
                    <CheckBox Name="checkBox" />
                    <TextBlock Name="textBox" Text="{Binding}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我想做的是為此列表框設置特定項目的復選框。

我正在嘗試這樣做:

    private void button4_Click(object sender, RoutedEventArgs e)
    {
        for(int i = 0; i < listBox.Items.Count; i++)
        {
            listBox.Items[i].checkBox = false;
        }
    }

我知道我做錯了。 我想將其強制轉換為項目的對象,然后將項目的屬性(此復選框)設置為false。 誰能糾正我? 先感謝您。

編輯

在嘗試以這種方式進行操作之前:

        foreach (var item in listBox.SelectedItems)
        {
            item.
        }

但是我得到的所有可能性只是標准方法:Equals,GetHashCode,GetType,ToString ...如何引用復選框?

此外,我將用洞見來提供我的問題。 我想通過文本在列表框(項目)中找到特定的項目,然后更改該項目的復選框(列表框中的同一行)。 要實現的第二個邏輯是將所有行設置為選中或未選中(這是我現在要嘗試的操作)。

感謝您的回應。

        for (int i = 0; i < listBox.Items.Count; i++)
        {
            var item = listBox.ItemContainerGenerator.ContainerFromItem(listBox.Items[i]) as ListBoxItem;
            var template = item.ContentTemplate as DataTemplate;

            ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(item);

            CheckBox myCheckBox = (CheckBox)template.FindName("checkBox", myContentPresenter);

            myCheckBox.IsChecked = true;
        }

同樣,您可以找到帶有以下內容的TextBlock(請注意,您將其命名為“ textBox”而不是“ textBlock”)

            TextBlock myTextBlock = (TextBlock)template.FindName("textBox", myContentPresenter);

FindVisualChild可以在這里找到FindVisualChild參考問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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