【问题标题】:Binding a checkbox to an elements visibility via XAML only仅通过 XAML 将复选框绑定到元素可见性
【发布时间】: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>

【问题讨论】:

    标签: c# xaml binding


    【解决方案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。您的图表中可能存在上下文问题。
    猜你喜欢
    • 2010-09-27
    • 2011-08-26
    • 1970-01-01
    • 2014-01-25
    • 2016-06-28
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多