我有一個ListBox
,其中包含由RadioButtons
組成的項目。它們是通過爲其提供ItemsSource
動態創建的。下面是ListBox
的XAML:已禁用RadioButton仍然可以選擇
<ListBox
Margin="20,5,0,0"
Width="Auto"
Background="Transparent"
BorderThickness="0"
BorderBrush="Transparent"
DisplayMemberPath="DisplayValue"
SelectedValuePath="Value"
SelectedItem="{Binding Path=SingleAnswer}"
ItemsSource="{Binding Path=AnswerOptions}">
<!-- KLG Score ItemsSource converter to filter out 'Unable to Assess' -->
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Margin" Value="0,0,25,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Background="Transparent" BorderThickness="0" BorderBrush="Transparent">
<Border.IsEnabled>
<MultiBinding Converter="{StaticResource RadioButtonToEnabledConverter}" >
<Binding Mode="OneWay" ElementName="this" Path="ParentForm.ImagesExist"/>
<Binding Mode="OneWay" Path="." />
</MultiBinding>
</Border.IsEnabled>
<RadioButton Focusable="False" IsHitTestVisible="False" IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" Click="KLGScoreRadioButton_Click" >
<RadioButton.IsEnabled>
<MultiBinding Converter="{StaticResource RadioButtonToEnabledConverter}" >
<Binding Mode="OneWay" ElementName="this" Path="ParentForm.ImagesExist"/>
<Binding Mode="OneWay" Path="." />
</MultiBinding>
</RadioButton.IsEnabled>
<ContentPresenter />
</RadioButton>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
</ListBox>
現在,答案應該不能夠由用戶選擇,只應自動填充這取決於商業邏輯指定。
爲此,我爲RadioButton.IsEnabled
屬性創建了一個轉換器,以始終將指定的RadioButton
設置爲禁用狀態。這有效;在應用程序中它被適當地禁用。但是,如果用戶點擊禁用選項,它仍然允許它被選中。我也嘗試在父項Border
上使用相同的轉換器(如上面的xaml所示),但行爲不變。
我也試過在的Click
事件中添加一個偵聽器,如果它們選擇禁用選項,將其設置爲處理,但該事件由於某種原因未被觸發。
無論如何不允許用戶選擇此選項嗎?
爲什麼downvote ...? – Saggio
您是否嘗試在觸發器中將IsHitTestVisible設置爲false? – whoisthis