Telerik RADListBox с CheckBox - Как вызвать отмеченный элемент в флажке для вызова его события RADListBox SelectedValue

У меня проблемы с пользовательским интерфейсом с RadListBox и проверки элементов в флажок. Проблема заключается в том, что мой выбор в флажке не будет вызывать событие, поскольку его выбор в RADListBox вызывает его. И пользователь должен установить флажок, а затем выбрать (щелкнуть) элемент в списке radlist, чтобы вызвать его событие SelectedValue. Мне бы хотелось, чтобы при установке флажка пользователь вызывал событие Selectedvalue в RadListBox. Вот мой код WPF:

<telerik:RadListBox  Grid.Row="1" x:Name="ExportersList" ItemsSource="{Binding Exporters}" Style="{StaticResource ModalListBoxStyle}"
           Visibility="{Binding ExportComplete, Converter={StaticResource InverseBoolToVisibilityConverter}}"
           SelectedValue="{Binding ExportFormatName, Mode=TwoWay}" SelectedValuePath="Name" SelectionMode="Multiple">
            <telerik:RadListBox.ItemTemplate>
                <DataTemplate DataType="{x:Type interfaces:BaseTourSheetExporterType}">
                    <StackPanel Orientation="Horizontal">
                        <CheckBox IsChecked="{Binding IsExporterChecked}" />
                        <TextBlock Text="{Binding Name}"  Margin="5" />
                    </StackPanel>
                </DataTemplate>
            </telerik:RadListBox.ItemTemplate>
        </telerik:RadListBox>

Обратите внимание, что событие SelectedValue связано со свойством в моем классе, и когда оно получает / устанавливает, я включаю / отключаю другую кнопку. Я не знаю, как получить мое событие Checkbox IsChecked (когда пользователь проверяет или снимает флажок), чтобы вызвать событие selectedvalue в radlistbox, и, в основном, позволяет моему пользователю просто отмечать / снимать флажок, который вызывает другое свойство get/set (ExportFormatName). Таким образом, пользователь может сделать это, не выбирая элемент снова в radlistbox (щелкнув за пределами флажка), чтобы вызвать событие get/set property. Пожалуйста, помогите мне с этой частью WPF.

Кроме того, я намеренно связываю CheckBox IsChecked с классом BaseTourSheetExporterType, который содержит логическое значение члена (IsExporterChecked). Это определяет, был ли он проверен или нет (этот класс и член должны помнить мои изменения, когда я заново открываю окно).

2 ответа

Теперь я решил проблему, изменив событие onclick флажка. Вот обновленная версия функции (обратите внимание на последнюю строку), где я принудительно вызываю selectedvalue и мой RadListBox:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        var cb = sender as CheckBox;
        if (cb == null)
        {
            return;
        }

        var item = cb.DataContext;
        this.ExportersList.SelectedItem = item;
        this.ExportersList.SelectedValue = this.ExportersList.SelectedItem.GetType().GetProperty("Name").GetValue(this.ExportersList.SelectedItem, null);
    }

Следующий код был добавлен, и мой элемент radlistbox теперь выбирается, когда я устанавливаю этот флажок, однако, когда я снимаю флажок, я все еще не получаю вызов свойства Get/Set ExportFormatName:

<telerik:RadListBox  Grid.Row="1" x:Name="ExportersList" ItemsSource="{Binding Exporters}" Style="{StaticResource ModalListBoxStyle}"
   Visibility="{Binding ExportComplete, Converter={StaticResource InverseBoolToVisibilityConverter}}"
   SelectedValue="{Binding ExportFormatName, Mode=TwoWay}" SelectedValuePath="Name" SelectionMode="Single">
    <telerik:RadListBox.ItemTemplate>
        <DataTemplate DataType="{x:Type interfaces:BaseTourSheetExporterType}">
            <StackPanel Orientation="Horizontal">
                <CheckBox IsChecked="{Binding IsExporterChecked}" Click="ButtonBase_OnClick"/>
                <TextBlock Text="{Binding Name}"  Margin="5" />
            </StackPanel>
        </DataTemplate>
    </telerik:RadListBox.ItemTemplate>
</telerik:RadListBox>

Нажатие кнопки в C#:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    var cb = sender as CheckBox;
    var item = cb.DataContext;
    ExportersList.SelectedItem = item;
}

Обратите внимание, что Get/Set of ExportFormatName вызывается правильно, когда я отмечаю этот флажок, только когда я снимаю флажок... пожалуйста, помогите.

Другие вопросы по тегам