XML中的绑定按钮单击事件
问题描述:
我试图从XML文件自动生成按钮列表。XML中的绑定按钮单击事件
这里是我的XML:
<WPFDS>
<Title>Hospital</Title>
<BUTTONS>
<BUTTON id="1" visible="1">
<Text>Content1</Text>
<Program>b1_Click<Program>
</BUTTON>
<!-- ... -->
</BUTTONS>
</WPFDS>
代码,使WPF自动生成“按钮列表”:
<XmlDataProvider x:Key="wpfds"
Source="Config/Config.xml"
XPath="/WPFDS"
IsAsynchronous="False"
IsInitialLoadEnabled="True"
/>
<!-- ... -->
<ListBox x:Name="lbBotones"
ItemsSource="{Binding Source={StaticResource wpfds}, XPath=./BUTTONS/BUTTON}"
Margin="0,19,0,354" Grid.Row="1" IsEnabled="True" Width="607"
HorizontalContentAlignment="Stretch" BorderBrush="{x:Null}"
Background="{x:Null}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled" Height="346"
>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Button Height="50" Width="150" Margin="70,10"
Content="{Binding XPath=./Text}"
/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
有了这个,正确生成按钮的列表,但问题我还需要“自动”为每个按钮分配一个Click事件。是否可以指定XML文档中的点击事件? 喜欢的东西:
Click="{Binding XPath=./Program}"
但它不工作。
感谢您的帮助!
答
这不能工作,因为事件处理程序在编译时解析;在你的情况下,事件处理程序的名称直到运行时才会知道。无论如何,你不能在一个事件上设置绑定(尽管在.NET 4.5中可能)。
[Binding Button click to a method]可能重复(http://stackoverflow.com/questions/3531772/binding-button-click-to-a-method) – Tomalak
+1重复。请参阅其他问题以获得解决方案(命令绑定)。 – jv42