0
我是Wpf的新手 我有一組3個單選按鈕 用於所有的複選框,單選按鈕變得異常或組中的第三個單選按鈕被選中。wpf - 當單選按鈕被選中或者沒有單選按鈕被選中時,checkbox.isvisible是真實的
我想知道是否有辦法做到這一點? 我嘗試構建booleanToVisibility但它不起作用。 我需要使用類似多個數據觸發器的東西嗎?謝謝!
我是Wpf的新手 我有一組3個單選按鈕 用於所有的複選框,單選按鈕變得異常或組中的第三個單選按鈕被選中。wpf - 當單選按鈕被選中或者沒有單選按鈕被選中時,checkbox.isvisible是真實的
我想知道是否有辦法做到這一點? 我嘗試構建booleanToVisibility但它不起作用。 我需要使用類似多個數據觸發器的東西嗎?謝謝!
你是對的MultiBinding。 XAML中應該是這樣的:
<Window.Resources>
<local:MultiBoolToVisibilityConverter x:Key="MultiBoolToVisibilityConverter"/>
</Window.Resources>
<DockPanel>
<StackPanel DockPanel.Dock="Top">
<RadioButton Name="rb1" Content="1"/>
<RadioButton Name="rb2" Content="2"/>
<RadioButton Name="rb3" Content="3"/>
</StackPanel>
<CheckBox DockPanel.Dock="Bottom" Content="Visible when 1 or 2 is checked.">
<CheckBox.Visibility>
<MultiBinding Converter="{StaticResource MultiBoolToVisibilityConverter}">
<Binding Path="IsChecked" ElementName="rb1" />
<Binding Path="IsChecked" ElementName="rb2" />
<Binding Path="IsChecked" ElementName="rb3" />
</MultiBinding>
</CheckBox.Visibility>
</CheckBox>
</DockPanel>
轉換器中MultiBoolToVisibilityConverter
應該在後面的代碼中定義,實施IMultiValueConverter
public class MultiBoolToVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool? firstRadioButtonIsChecked = values[0] as bool?;
bool? secondRadioButtonIsChecked = values[1] as bool?;
bool? thirdRadioButtonIsChecked = values[2] as bool?;
//set your logic. this is just an example:
if (firstRadioButtonIsChecked == true || secondRadioButtonIsChecked == true)
return Visibility.Visible;
return Visibility.Collapsed;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
進一步的問題,你可以看到this post on MultiBinding and IMultiValueConverter其他谷歌的建議之一。