仅通过 XAML 将复选框绑定到元素可见性
Posted
技术标签:
【中文标题】仅通过 XAML 将复选框绑定到元素可见性【英文标题】:Binding a checkbox to an elements visibility via XAML only 【发布时间】:2021-10-17 18:34:58 【问题描述】:我不明白为什么绑定不能这样工作?
<UserControl>
<StackPanel>
<CheckBox x:Name="CBTempA" VerticalAlignment="Center" Margin="10,0,0,0"/>
<Label VerticalAlignment="Center">Temp A</Label>
</StackPanel>
<lvc:CartesianChart>
<lvc:CartesianChart.Series>
<lvc:LineSeries Values="Binding TempAValues" Visibility="Binding ElementName=CBTempA, Path=IsChecked, Converter=StaticResource BoolToVisibility"/>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
</UserControl>
【问题讨论】:
【参考方案1】:转换器BoolToVisibility
将布尔值 (IsChecked
) 转换为 System.Windows.Visibility 值。它可能看起来像这样:
public class BoolToVisibilityConverter : IValueConverter
// value is a parameter from xaml (IsChecked)
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
if (value is bool)
return (bool) value ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
return System.Windows.Visibility.Collapsed;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
throw new NotImplementedException();
【讨论】:
转换器工作正常,我已经成功地将它与其他元素一起使用。所以这不是问题。 尝试Visibility="Binding Source=x:Reference CBTempA, Path=IsChecked,..."
而不是ElementName
。您的图表中可能存在上下文问题。以上是关于仅通过 XAML 将复选框绑定到元素可见性的主要内容,如果未能解决你的问题,请参考以下文章