我有一个UserControl
带有多个StackPanel
的。我喜欢根据用户操作隐藏特定面板。启动时可见的AStackPanel
为我提供了许多工作按钮。这些按钮在代码隐藏文件中具有单击事件。折叠面板然后使其再次可见后,按钮不再起作用。这是我的一部分UserControl
:
<StackPanel x:Name="buttonPanel" Orientation="Horizontal">
<Button x:Name="ReMindNodeNotes" Content=""
FontFamily="Segoe UI Symbol" FontSize="14" Foreground="#FF292323"
HorizontalAlignment="Left" BorderThickness="1" Padding="0"
UseLayoutRounding="True" Click="NoteClicked" />
<Button x:Name="ReMindNodeRemove" Content=""
FontFamily="Segoe UI Symbol" FontSize="14" Foreground="#FF292323"
HorizontalAlignment="Left" BorderThickness="1" Padding="0"
UseLayoutRounding="True" Click="RemoveClicked" />
</StackPanel>
这是代码(现在只是一些文本):
private void NoteClicked(object sender, RoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("NoteClicked...");
}
private void RemoveClicked(object sender, RoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("RemoveClicked...");
}
这两天我一直在寻找解决方案。到目前为止没有运气。谁能帮忙……?
THX 彼得
跟进1...
下面是折叠面板的代码:
private void MoreClicked(object sender, RoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine(this.nodeName);
this.buttonPanel.Visibility =
this.buttonPanel.Visibility ==
Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
}
如果 buttonPanel 有焦点,它就可以工作。如果焦点在另一个面板上,则不会。此外,我可能应该提到...用户可以创建用户控件的多个实例。
谢谢
跟进2...
我当然继续研究解决方案...... ;-) 我找到了一个解决方案,但这不是我想要的解决方案。让我解释。
用户可以交互地创建前面提到的用户控件的多个实例。创建新实例时,该实例将获得焦点。现在每个实例都有自己的一组按钮,这些按钮位于堆栈面板上。当焦点转到另一个实例时,我希望前一个实例的面板折叠。然后应将焦点设置到新的(或选定的现有)实例。
当我手动执行此操作时,它可以工作!但是,当我尝试通过 GotFocus 和 LostFocus 事件来实现这一点时,它没有。这是手动解决方案的代码(有效):
private void MoreClicked(object sender, RoutedEventArgs e)
{
this.buttonPanel.Visibility =
this.buttonPanel.Visibility ==
Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
}
以下是 LostFocus 和 GotFocus 事件:
private void NodeGotFocus(object sender, RoutedEventArgs e)
{
this.buttonPanel.Visibility = Visibility.Visible;
}
private void NodeLostFocus(object sender, RoutedEventArgs e)
{
this.buttonPanel.Visibility = Visibility.Collapsed;
}
我真的很感谢你的帮助!再次感谢...