как использовать Multi Checkbox с привязкой - wpf - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел бы назначить действие для каждого из моих флажков, но я не знаю как, потому что я использую привязку.

ниже - XAML.cs

public MainWindow()
    {
        InitializeComponent();

        Collection1 = new string[] { "Female", "Male", "Animal", "Safe", "Soft", "Hard", "Space", "Landscape", "Outside", "Inside", "City", "France", "Flower", "Sunset", "Sky", "Fireworks", "Spring", "Winter", "Summer", "Fall", "Christmas", "Halloween", "Ghost", "Demon", "Angel", "Watermelon", "Storm", "Waterfall", "Night", "Sun","Moon", "Food", "Cheese", "Kancolle", "IT", "UFO", "Travel", "Sport", "Nightmare"};

        Collection2 = new string[] { "website1", "website2", "website3", "website4", "website5","website6", "website7", "website8", "website9", "website10", "website11", "website12", "website13", "website14", "website15", "website16", "website17", "website18" };

        DataContext = this;
    }

    private void CB_catego_Checked(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("this is an categorie");
    }

    private void CB_website_Checked(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("this is an website");
    }

, и вот мойXAML:

<ScrollViewer HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="97" Margin="10,209,0,0">
        <ListBox ItemsSource="{Binding Collection1}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox Checked="CB_catego_Checked" Content="{Binding .}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </ScrollViewer>
    <ScrollViewer HorizontalAlignment="Left" Height="107" VerticalAlignment="Top" Width="97" Margin="10,97,0,0">
        <ListBox ItemsSource="{Binding Collection2}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox Checked="CB_website_Checked" Content="{Binding .}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </ScrollViewer>

Вы знаете, возможно ли это?Большое спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Я наконец-то нашел решение.

 private void CB_website_Checked(object sender, RoutedEventArgs e)
    {
        boards.Add(strBoard[((CheckBox)(sender)).Content.ToString()]);
    }

эта строка позволяет мне узнать, какой флажок был отмечен благодаря моему словарю:

        private readonly Dictionary<string, Board> strBoard = new Dictionary<string, Board>()
    {
        { "website1", Board.website1 },
        { "website2", Board.website2 },
        { "website3", Board.website3 },
        { "website4", Board.website4 },
        { "website5", Board.website5 },
        { "website6", Board.website6 },
        { "website7", Board.website7 },
        { "website8", Board.website8 },
        { "website9", Board.website9 },
        { "website10", Board.website10 },
        { "website11", Board.website11 },
        { "website12", Board.website12 },
        { "website13", Board.website13 },
        { "website14", Board.website14 },
        { "website15", Board.website15 },
        { "website16", Board.website16 },
        { "website17", Board.website17 },
        { "website18", Board.website18 }
    };
...