繁体   English   中英

带Caliburn.Micro MVVM的WPF ItemsPanel

[英]WPF ItemsPanel with Caliburn.Micro MVVM

我正在开发WPF应用程序,并将Caliburn.Micro用于MVVM。 我需要在运行时动态地将按钮添加到视图中。 我已经做过一些研究,并且我知道我可以使用ItemControl来实现。

   <Window
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <Grid>  
      <ItemsControl>
      <Button x:Name="ExecuteMethod1" Content="Execute1" />
      <Button x:Name="ExecuteMethod2" Content="Execute2" />
      <Button x:Name="ExecuteMethod3" Content="Execute3" />
      </ItemsControl>
      </Grid>
    </Window>

Caliburn.Micro's约定允许调用与Button的x:Name属性匹配的方法。 在上面的代码中,名为ExecuteMethod1的按钮将在ViewModel中调用方法ExecuteMethod1()。

问题:

在动态添加按钮时,如何设置按钮的X:Name属性? 我尝试使用Binding设置它,但是WPF不允许绑定X:Name属性。 还有其他选择吗? 有人可以帮我一个建议吗?

我不确定这是否是一项新功能。 从Caliburn Micro文档中获取了它的信息。 添加Windows交互程序集。 您可以将按钮的名称或内容传递给您的操作,该操作应足以识别单击了哪个按钮并执行正确的操作。 CaliburnMicro动作

<UserControl x:Class="Caliburn.Micro.HelloParameters.ShellView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:cal="http://www.caliburnproject.org">
    <StackPanel>
        <TextBox x:Name="Name" />
        <Button Content="Click Me">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <cal:ActionMessage MethodName="SayHello">
                        <cal:Parameter Value="{Binding ElementName=Name, Path=Text}" />
                    </cal:ActionMessage>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </StackPanel>
</UserControl> 

暂无
暂无

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

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