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 вызывается правильно, когда я отмечаю этот флажок, только когда я снимаю флажок... пожалуйста, помогите.