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