【发布时间】:2014-07-25 20:24:55
【问题描述】:
我正在尝试用一个按钮打开一个弹出窗口并实现了一个基本的 ICommand。该按钮绑定到 ICommand OpenPopupCommand,而 Popup IsOpen 属性绑定到“IsOpen”OnPropertyChanged。我的想法是将 Popup.IsOpen 属性绑定到 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}"/>
【问题讨论】:
-
我认为如果您在代码方面提供更多上下文会很有价值。
-
"Popup IsOpen 属性绑定到 "IsOpen" OnPropertyChanged" 到底想表达什么?听起来您想说您在依赖属性和方法之间进行了绑定——这是不可能的,也没有意义。 (另请注意,Popup.IsOpen NOT 是一个属性,它是一个依赖属性。属性完全是另外一回事......)
-
请把 xaml 也发给你。
-
您的代码虽然不完整,但看起来还不错,但如果没有您的 xaml 标记,我们就无法判断。我希望 OnPropertyChanged("IsOpen") 在 INotifyPropertyChanged 接口中引发事件,但我们在这里猜测 =)。请完整的代码和xaml。
-
@User1489726 抱歉……
标签: c# wpf popup icommand relaycommand