繁体   English   中英

按钮内的按钮(WPF + Caliburn.Micro)

[英]Button inside button (WPF + Caliburn.Micro)

在常规WPF中,您可以在另一个按钮内有一个按钮,并且为了防止在单击内部按钮时同时引发两个按钮事件,您可以使用以下XAML(根据此问题 ):

<Button Click="OuterClick">
    <Grid>
        <SomeOtherContent />
        <Button Click="InnerClick" />
    </Grid>
</Button>

然后在代码背后,使用事件的Handled属性,以便在单击内部按钮时不会引发OuterClick:

private void OuterClick(object sender, RoutedEventArgs e) {
    // Do something
}
private void InnerClick(object sender, RoutedEventArgs e) {
    // Do something else
    e.Handled = true;
}

但是,按照通常的Caliburn.Micro约定,您将具有以下XAML:

<Button x:Name="OuterClick">
    <Grid>
        <SomeOtherContent />
        <Button x:Name="InnerClick" />
    </Grid>
</Button>

在ViewModel中使用以下代码:

private void OuterClick() {
    // Do something
}
private void InnerClick() {
    // Do something else
}

当我单击InnerButton时,如何确保不会同时InnerClick()OuterClick()

编辑:或者,我还可以使用其他哪种控件?

<StackPanel cal:Message.Attach="[Event MouseDown]=[Action OuterClick()]">
    <StackPanel Orientation="Horizontal">
        <SomeotherContent />
        <Button x:Name="InnerClick" />
    </StackPanel>
</StackPanel>

在您的视图模型中

public void OuterClick()
{
    //Do something
}
public void InnerClick()
{
    //Do something
}

使用stackpanel并为该事件应用事件。

这将为您提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM