在常规WPF中,您可以在另一个按钮内部有一个按钮,并且为了防止在单击内部按钮时引发两个按钮事件,您可以拥有以下XAML(根据this question):
<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()
?
编辑:或者,我可以使用其他类型的控件吗?
答案 0 :(得分:0)
<StackPanel cal:Message.Attach="[Event MouseDown]=[Action OuterClick()]">
<StackPanel Orientation="Horizontal">
<SomeotherContent />
<Button x:Name="InnerClick" />
</StackPanel>
</StackPanel>
在您的viewmodel中
public void OuterClick()
{
//Do something
}
public void InnerClick()
{
//Do something
}
使用stackpanel并为该那个应用事件。
这会对你有帮助。