【问题标题】:Toggle List Box Display In WPF在 WPF 中切换列表框显示
【发布时间】:2015-11-14 06:54:12
【问题描述】:

我的 WPF 应用程序中有一个列表框。这是xaml代码:

  <ListBox Grid.Row="4" Grid.Column="1" Visibility="{Binding lbIsVisible}">
        <ListBoxItem>
            <CheckBox>
                <TextBlock>CITRUS EXPRESS</TextBlock>
            </CheckBox>
        </ListBoxItem>

        <ListBoxItem>
            <CheckBox>
                <TextBlock>APL CALIFORNIA</TextBlock>
            </CheckBox>
        </ListBoxItem>

        <ListBoxItem>
            <CheckBox>
                <TextBlock>IS JAPAN</TextBlock>
            </CheckBox>
        </ListBoxItem>
    </ListBox>

    <CheckBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Center" x:Name="chkSelectVessel" Checked="chkSelectVessel_Checked">
        <TextBlock Text="Select Vessel"></TextBlock>
    </CheckBox>

我正在尝试切换列表框的可见性。 这是 C# 代码。

public partial class ConfigSetting : Window
{
    public string lbIsVisible { get; set; }

    public ConfigSetting()
    {
        InitializeComponent();
        DataContext = this;
        lbIsVisible = "Hidden";
    }

    private void chkSelectVessel_Checked(object sender, RoutedEventArgs e)
    {
        this.lbIsVisible = "Visible";
    }
}

但它似乎不起作用。任何一点我哪里出错了?

【问题讨论】:

  • 你在哪里定义chkSelectVessel_Checked事件?
  • 更新了 xaml 代码

标签: c# wpf


【解决方案1】:

你应该像这样使用INotifyPropertyChanged Interface:

public partial class ConfigSetting : Window, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string lbIsVisible;

    public string LbIsVisible
    {
        get { return lbIsVisible; }
        set
        {
            if (lbIsVisible != value)
            {
                lbIsVisible = value;
                OnPropertyChanged("LbIsVisible");
            }
        }
    }

    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public ConfigSetting()
    {
        InitializeComponent();
        LbIsVisible = "Hidden";
        DataContext = this;
    }        

    private void chkSelectVessel_Checked(object sender, RoutedEventArgs e)
    {
        LbIsVisible = "Visible";
    }

    private void ChkSelectVessel_OnUnchecked(object sender, RoutedEventArgs e)
    {
        LbIsVisible = "Hidden";
    }
}

并在 XAML 中绑定到LbIsVisible 属性:

<ListBox Visibility="{Binding LbIsVisible}">

还将Unchecked 事件添加到您的CheckBox:

<CheckBox Grid.Row="3" Grid.Column="1" VerticalAlignment="Center" 
  x:Name="chkSelectVessel" Checked="chkSelectVessel_Checked" Unchecked="ChkSelectVessel_OnUnchecked">

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多