如何获取所有listBox标记的checkBox? WPF

时间:2016-05-10 05:52:45

标签: c# wpf checkbox

XAML:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication1"
    xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="WpfApplication1.MainWindow"
    mc:Ignorable="d"
    Title="MainWindow" Height="637" Width="1889">
    <Grid RenderTransformOrigin="0.505,0.844" Margin="0,0,0,19">
        <CheckBox x:Name="cbFilter" Content="CheckBox" HorizontalAlignment="Left" Margin="15,410,0,0" VerticalAlignment="Top" Width="100" Height="25"/>
        <ComboBox x:Name="cbFilterMode" HorizontalAlignment="Left" Margin="95,410,0,0" VerticalAlignment="Top" Width="120">
            <TextBlock>=</TextBlock>
            <TabItem/>
        </ComboBox>
        <TextBox x:Name="txtFilterValue" HorizontalAlignment="Left" Height="23" Margin="225,409,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
        <GroupBox x:Name="groupBox" Header="GroupBox" HorizontalAlignment="Left" Margin="225,10,0,0" VerticalAlignment="Top" Width="1110" Height="385">
             <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="245,105,0,0" VerticalAlignment="Top" Height="230" Width="645"/>
        </GroupBox>
        <ListBox x:Name="listBox"   HorizontalAlignment="Left" Height="385" Margin="10,10,0,0" VerticalAlignment="Top" Width="230" FontFamily="Segoe UI Black" Grid.Column="10">
            <ListBox.ItemTemplate >
                <DataTemplate>
                    <CheckBox x:Name="qqq"  Content="{Binding }" IsChecked="{Binding IsChecked}" Click="CheckBox_Click"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
</Grid>

代码背后:

private void CheckBox_Click(object sender, RoutedEventArgs e)
{

    var cb = sender as CheckBox;
    var item = cb.IsChecked;
    listBox.SelectedItem = item;

    if (listBox.SelectedIndex==0) return;



    string query = "SELECT NON EMPTY { [Measures].[Число Подписки] } ON COLUMNS, NON EMPTY {(";




    foreach (string i in listBox.Checked)
    {
        query += " " + i.ToString() + ".ALLMEMBERS *";
    }

    query = query.Remove(query.Length - 2);

    query += " )} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Почта] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS";
UpdateChart(query);

}

事实证明只是一次性撤回,如何做到这一点将由一个推断出来(即如果checkBox == true,那么我们得出结论:立方体的测量)

1 个答案:

答案 0 :(得分:0)

如果您有这样的模型类:

<table>
  <tr>
    <td>Something</td>
    <td>Something</td>
    <td>Something</td>
  </tr>
  <tr>
    <td>Something</td>
    <td>Something</td>
    <td>Something</td>
  </tr>
  <tr>
    <td>Something</td>
    <td>Something</td>
    <td>Something</td>
  </tr>
</table>

并填充public class FooClass { public bool IsChecked { get; set; } } 看起来像这样:

ListBox

然后从 public MainWindow()//***ctor of Window { InitializeComponent(); PopulateListView(); } private void PopulateListView() { IList<FooClass> someValues = new List<FooClass>(); for (int i = 0; i < 10; i++) { someValues.Add(new FooClass() { IsChecked=true}); } listBox.ItemsSource = someValues; } 获取所有CheckBox'es值即可:

ListBox