0

デフォルトでは、いくつかのリストボックス項目はチェックされており、いくつかはチェックされていません。その後、ユーザーはチェックされたアイテムまたはチェックされていないアイテムを変更できます。チェックされたID、チェックされていないIDを維持する方法を教えてください..

 private void CheckBox_Checked(object sender, RoutedEventArgs e)
        {
            ListBoxItem checedItem = this.listBox2.ItemContainerGenerator.ContainerFromItem((sender as CheckBox).DataContext) as ListBoxItem;
            if (checedItem != null)
            {
                checedItem.IsSelected = true;
            }

        }
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
        {
            ListBoxItem checedItem = this.listBox2.ItemContainerGenerator.ContainerFromItem((sender as CheckBox).DataContext) as ListBoxItem;
            if (checedItem != null)
            {
                checedItem.IsSelected = false;
            }
        }

string result1 = e.Result.ToString();

                XDocument xmlDocu = XDocument.Load(new MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(result)));

                interestrates = (from rts in xmlDocu.Descendants("Friend")

                                 select new SampleCheckedData
                                 {

                                     Id = (string)rts.Element("userid"),
                                     Name = (string)rts.Element("name"),
                                     Icon = (string)rts.Element("imageurl"),
                                     IsChecked = !(Boolean)rts.Element("visiblestatus"),

                                 }).ToList<SampleCheckedData>();

                this.listBox2.ItemsSource = interestrates;

<ListBox x:Name="listBox2" SelectionMode="Multiple" Margin="0,67,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding Icon}" Stretch="Fill" MaxHeight="Infinity" MaxWidth="Infinity" Width="100" Height="100" />

                                <TextBlock Text="{Binding Name}" Width="300" VerticalAlignment="Center" TextWrapping="NoWrap" FontSize="22" />
                            <CheckBox IsChecked="{Binding IsChecked}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
                        </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

編集:

 private void btnDone_Click(object sender, RoutedEventArgs e)
        {
            var checkedItems = from item in interestrates where item.IsChecked select item.Id;
            var uncheckedItems = from item in interestrates where !item.IsChecked select item.Id;
}

チェックされたユーザーID、チェックされていないユーザーIDを維持する方法を教えてください.....

4

1 に答える 1

1

コレクションを ListBox ItemsSource プロパティに直接割り当てるだけでなく、コードのどこかに隠していると仮定すると、コレクション項目のプロパティを簡単に確認できるはずです...

var checkedItems = from item in interestrates where item.IsChecked select item;
var uncheckedItems = from item in interestrates where !item.IsChecked select item;

userIdsだけが必要な場合は、クエリを次のように変更します

var checkedItems = from item in interestrates where item.IsChecked select item.Id;
var uncheckedItems = from item in interestrates where !item.IsChecked select item.Id;
于 2012-06-06T11:38:58.783 に答える