切换弹出内容wpf
这就是我要做的 切换按钮1(editNameOpen)切换弹出内容wpf,wpf,xaml,popup,toggle,Wpf,Xaml,Popup,Toggle,这就是我要做的 切换按钮1(editNameOpen) 选中后,显示弹出内容 关闭它的唯一方法是从弹出窗口内的另一个切换按钮(editNameClose)关闭 切换按钮2(editNameClose) 这是弹出窗口的内部 选中后,关闭弹出窗口并关闭editNameOpen 这里有一些xaml,我正在使用它来尝试解决问题。到目前为止的问题: 我的多重绑定错误,并引发运行时错误“无法设置多重绑定,因为必须指定多值转换器”。在这种情况下,多值转换器将转换什么 当选中第二个切换按钮时,如何关闭第
- 选中后,显示弹出内容
- 关闭它的唯一方法是从弹出窗口内的另一个切换按钮(editNameClose)关闭
- 这是弹出窗口的内部
- 选中后,关闭弹出窗口并关闭editNameOpen
贝里尔
**打开并保持打开状态,直到选中editNameClose
**当选中editNameClose时,如何将editNameOpen重置为未选中?
**如何将editNameClose重置为未选中,然后在再次打开时将editNameClose重置为未选中?
我个人会将Popup.IsOpen
和两个切换按钮
绑定到数据上下文中的单个布尔属性
因此,当选中第一个切换按钮时,它将布尔值设置为true
,这使得Popup.IsOpen
计算为true
,并打开弹出窗口
第二个切换按钮
可能需要使用转换器
来反转布尔属性,因此当IsOpen=true
时,它显示为未选中,选中它将使IsOpen=false
,这将自动关闭弹出窗口
,并取消选中第一个切换按钮
至于您得到的错误,MultiBinding
需要类型为IMultiValueConverter
的Converter
,因为您无法将一个属性绑定到两个单独的值。您需要一个转换器将这些值转换为您可以使用的单个值
如果您确实想这样做,而不是使用DataContext
中的属性,请尝试将Popup
的IsOpen
属性与切换按钮的IsChecked
属性绑定在一起
<Popup x:Name="popupNameEditingControl"
IsOpen="{Binding IsChecked, ElementName=editNameOpen, Mode=TwoWay}"
... >
...
<ToggleButton x:Name="editNameClose" Content="X"
IsChecked="{Binding IsChecked, ElementName=editNameOpen,
Converter={StaticResource ReverseBooleanConverter}, Mode=TwoWay}" />
...
</Popup>
...
...
我最初是用虚拟机来控制这一点的,然后决定这真的是一个只查看的事件。虽然这听起来很简单,但我将首先使用仅视图方法,至少作为练习。干杯,如果你有一个如何弹出的概念。风格应该看起来会喜欢看到它@我个人讨厌WPF内置的弹出控件,通常使用我自己的自定义UserControl
。如果你是,你可以找到代码interested@Berryl我还添加了一个代码示例,用于将IsOpen
和IsChecked
属性绑定到我的答案中
<Popup x:Name="popupNameEditingControl"
IsOpen="{Binding IsChecked, ElementName=editNameOpen, Mode=TwoWay}"
... >
...
<ToggleButton x:Name="editNameClose" Content="X"
IsChecked="{Binding IsChecked, ElementName=editNameOpen,
Converter={StaticResource ReverseBooleanConverter}, Mode=TwoWay}" />
...
</Popup>