gpt4 book ai didi

c# - 使用按钮打开 WPF 弹出窗口

转载 作者:行者123 更新时间:2023-11-30 22:04:44 34 4
gpt4 key购买 nike

我试图用一个按钮打开一个 Popup 并实现了一个基本的 ICommand。该按钮绑定(bind)到 ICommand OpenPopupCommand,而 Popup IsOpen 属性绑定(bind)到“IsOpen”OnPropertyChanged。我的想法是将 Popup.IsOpen 属性也绑定(bind)到 ICommand 以让 IT 触发 OnPropertyChange 但无法使其工作。我想我很接近但无法弄清楚。这是我到目前为止的代码:

    #region ICommand Members

private ICommand _openPopupCommand;
public ICommand OpenPopupCommand
{
get
{
if (_openPopupCommand == null)
_openPopupCommand = new RelayCommand(param => OpenPopupExecute(param));
return _openPopupCommand;
}
set
{
_openPopupCommand = value;
}
}

#endregion

#region Methods

public void OpenPopupExecute(object parameter)
{
parameter = true;
OnPropertyChanged("IsOpen");
}

#endregion

“弹出”Popup 和 Popup XAML 的按钮:

<Popup x:Name="FieldsPopup" Placement="Center" Width="400" Height="250" IsOpen="{Binding IsOpen}">
<StackPanel>
<TextBlock Background="LightBlue" HorizontalAlignment="Center" VerticalAlignment="Center" Height="250" Width="350" TextAlignment="Center" >This is a popup</TextBlock>
</StackPanel>
</Popup>
<Button Name="button_PatientIdentifierList" Width="23" Height="23" Grid.Column="2" Foreground="Black" Background="#FFCDCDCD" BorderBrush="#FF707070" Margin="3.4,4,4,0" VerticalAlignment="Top" Command="{Binding OpenPopupCommand}"/>

最佳答案

您正在发出 PropertyChange 通知,但我没有看到您实际上在任何地方更改属性。

除非我弄错了,否则这里的代码采用CommandParameter(此处称为parameter)并将其设置为true

public void OpenPopupExecute(object parameter)
{
parameter = true;
OnPropertyChanged("IsOpen");
}

但是在您的 XAML 中,Button.CommandParameter 未绑定(bind)到任何内容

<Button Command="{Binding OpenPopupCommand}"/>

所以我怀疑 parameter 只是 null,实际上并没有在这里做任何事情。

您似乎缺少的是实际的 IsOpen 属性定义,并在命令的执行代码中将其设置为 true :

private bool _isOpen;
public bool IsOpen
{
get
{
return _isOpen;
}
set
{
_isOpen = value;
OnPropertyChanged("IsOpen");
}
}

public void OpenPopupExecute(object parameter)
{
IsOpen = true; // Will call OnPropertyChanged in setter
}

附带说明一下,我真的不喜欢 WPF 的默认 PopupControl,并且有一个 custom UserControl version of it on my blog如果您决定也讨厌 WPF 的默认 PopupControl :)

关于c# - 使用按钮打开 WPF 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24963938/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com